SQL Server Reporting Servicesの電子メール サブスクリプションの配信中に AuthzInitializeContextFromSid API 関数の呼び出しが失敗する

この記事は、電子メール サブスクリプションの配信中に AuthzInitializeContextFromSid API 関数呼び出しで発生する可能性がある問題を解決するのに役立ちます。

元の製品バージョン: SQL Server
元の KB 番号: 842423

概要

この記事では、Microsoft SQL Server Reporting ServicesとPower BI Report Serverで発生する可能性がある問題の原因と考えられる解決策について説明しますSQL Server Reporting Servicesドメイン ユーザー アカウントを使用して電子メール サブスクリプションを作成して処理しようとすると、 この問題は、Authz.dll ファイル内の API 関数呼び出しが成功しなかった場合 AuthzInitializeContextFromSid に発生します。

注:

この問題は、Windows Server 2008 では発生しません。

この記事で説明する解決策は次のとおりです。

ドメイン ユーザー アカウントで実行するようにReporting Services Windows サービスを構成する方法。 これで問題が解決しない場合は、次のいずれかの方法も使用する必要があります。

  • すべてのユーザー アカウントとドメインのすべてのグループに対して、ドメイン ユーザー アカウントの読み取りアクセス許可を付与します。
  • ユーザー アカウントまたはユーザーがメンバーであるグループに対して、ドメイン ユーザー アカウントの読み取りアクセス許可を付与します。

概要

この記事では、電子メール サブスクリプションの配信中に AuthzInitializeContextFromSid 発生する API 関数呼び出しに関連する問題について説明します。 この記事では、問題に対して考えられるいくつかの解決策についても説明します。

詳細情報

電子メール サブスクリプションの電子メールを配信するときに、Reporting Services プログラムは、Authz.dll ファイルで定義されている API 関数を呼び出AuthzInitializeContextFromSidす場合があります。 次のいずれかの条件に該当する場合、AuthzInitializeContextFromSidReporting Services プログラムは API 関数を呼び出します。

  • レポートが電子メールに埋め込まれています。
  • レポートが電子メールに添付されます。

Reporting Services Windows サービスのサービス ログオン アカウントとは異なるドメイン ユーザー アカウントを使用して電子メール サブスクリプションを作成して処理すると、AuthzInitializeContextFromSidAPI 関数呼び出しが失敗する可能性があります。

関数呼び出しが失敗した場合は、問題を解決するために、Reporting Services実行しているコンピューターのドメインで設定を構成する必要がある場合があります。

Reporting Services プログラムは API 関数をAuthzInitializeContextFromSid呼び出して、サブスクリプションの作成に使用されたユーザー アカウントに、レポートを表示するための適切なアクセス許可が引き続き付与されているかどうかを確認します。 この検証は、ユーザーが URL を使用してレポートにアクセスしようとしたときにユーザーアクセス許可の検証を実行Reporting Servicesので、電子メールにレポートへのリンク (URL) のみが含まれている場合は必要ありません。

API 関数呼び出しは AuthzInitializeContextFromSid 、API 関数呼び出しで指定されているセキュリティ識別番号 (SID) の tokenGroupsGlobalAndUniversal (TGGAU) 属性を AuthzInitializeContextFromSid 読み取り、現在のユーザーの Windows グループ メンバーシップ情報を決定します。 Reporting Servicesでは、AuthzInitializeContextFromSidReporting Services Windows サービスのサービス ログオン アカウントのセキュリティ コンテキストを使用した API 関数。 そのため、Reporting Services Windows サービスの実行に使用するユーザー アカウントには、電子メール サブスクリプションの作成と処理に使用されるユーザー アカウントの属性を読み取TGGAUるために十分なアクセス許可が必要です。

コンピューターがアクセスするように正しく構成されておらず、Authz.dll ファイルで API 関数呼び出しを実行 AuthzInitializeContextFromSid するように構成されていない場合は、エラー メッセージが表示される可能性があります。 さらに、エラー メッセージがReporting Servicesログ ファイルに書き込まれる場合があります。 発生したエラーを特定するには、次の手順に従います。

  1. ReportServerService_ Timestamp.log ファイルを開きます。 authz という単語を検索します。

    注:

    既定では、ReportServerService_ Timestamp.log ファイルは にあります <Installation drive>:\Program Files\Microsoft SQL Server\<InstanceOfSQLServer>\Reporting Services\Logfiles folder

    ReportServerService_ Timestamp.log ファイルで、次のようなエラー メッセージが表示されることがあります。

    • エラー メッセージ 1

      ReportingServicesService!library!718!06/16/2004-00:00:03:: e ERROR: Throwing Microsoft.ReportingServices.Diagnostics.Utilities.ServerConfigurationErrorException: レポート サーバーで構成エラーが発生しました。ログ ファイルの詳細については、AuthzInitializeContextFromSid: Win32 エラー: 5;考えられる理由 - サービス アカウントには、ドメイン ユーザー SID をチェックする権限がありません。情報: Microsoft.ReportingServices.Diagnostics.Utilities.ServerConfigurationErrorException: レポート サーバーで構成エラーが発生しました。ログ ファイルの詳細。

    • エラー メッセージ 2

      ReportingServicesService!library!7e4!05/24/2004-10:00:22:: e ERROR: Throwing Microsoft.ReportingServices.Diagnostics.Utilities.ServerConfigurationErrorException: レポート サーバーで構成エラーが発生しました。ログ ファイルの詳細については、AuthzInitializeContextFromSid: Win32 エラー: 1722;情報: Microsoft.ReportingServices.Diagnostics.Utilities.ServerConfigurationErrorException: レポート サーバーで構成エラーが発生しました。ログ ファイルの詳細。

  2. エラー メッセージの原因となった電子メール サブスクリプションを変更します。 電子メールにレポートを埋め込んだり添付したりしないでください。 レポートへのリンクを使用します。 変更したサブスクリプションを処理した後、エラー メッセージが表示されない場合は、API 関数の呼び出しが失敗したためにエラーが AuthzInitializeContextFromSid 発生したことを確認できます。

この問題を解決するには、以下のいずれかの方法を使用します。

次の条件に該当する場合は、方法 1 を使用できます。

  • Reporting Services Windows サービスは、ネットワーク サービス アカウントで実行されています。
  • Reporting Services Windows サービスが実行されているアカウントを変更する必要はありません。 一般的な解決には、方法 2 を使用できます。 方法 2 で問題が解決しない場合は、方法 3 を使用します。

方法 1

  1. Active Directory ユーザーとコンピューター スナップインを使用して、Windows アカウントを Pre-Windows 2000 Compatibility Access グループに追加します。
  2. Active Directory ユーザーとコンピューター スナップインを使用して、Windows アカウントを Windows 承認アクセス グループに追加します。
  3. Reporting Servicesを実行しているコンピューターを再起動します。

注:

  • 手順 1 と手順 2 の Windows アカウントは、Reporting Servicesの実行に使用するアカウントです。
  • これらのグループにアカウントを追加すると、REPORTING SERVICESが TGGAU 属性にアクセスできることが保証されます。
  • このメソッドでは、ユーザーまたはグループに対するアクセス許可を変更する必要はありません。

方法 2

ドメイン ユーザー アカウントで実行するようにReporting Services Windows サービスを構成します。

注:

Reporting Services Windows サービスの実行に使用されるユーザー アカウントを変更しようとすると、エラー メッセージがReporting Servicesトレース ログに書き込まれる場合があります。

方法 3

Reporting Servicesを実行しているコンピューターのドメインで設定を構成します。 それには、以下のいずれかの方法を使用します。

すべてのユーザー アカウントとドメイン内のすべてのグループに対して読み取りアクセス許可を付与する

この問題を解決するには、Windows サービスの実行に使用するユーザー アカウントに対して読み取りアクセス許可を付与し、ドメイン内のすべてのユーザー アカウントとすべてのグループで属性を読み取TGGAUReporting Services。 これを行うには、使用しているオペレーティング システムに応じて、次のいずれかのセクションの情報を使用します。

Microsoft Windows 2000 ドメインの場合

ドメインが Windows 2000 より前の互換アクセス モードの場合、EVERYONE グループには、すべてのユーザー アカウントとすべてのグループの TGGAU 属性に対する読み取りアクセス許可があります。 そのため、Reporting Services Windows サービスの実行に使用するユーザー アカウントは、電子メール サブスクリプションの作成に使用Reporting Servicesユーザー アカウントの属性にアクセスTGGAUできます。

ドメインが Windows 2000 以前の互換アクセス モード (ネイティブ モードとも呼ばれます) にない場合は、Reporting Services Windows サービスの実行に使用するユーザー アカウントに対して読み取りアクセス許可を付与し、サブスクリプションの作成に使用するユーザー アカウントの属性Reporting Services読み取TGGAUることができるようにする必要があります。 Windows 2000 以前の互換性グループをシミュレートするドメイン ローカル グループを作成し、Reporting Services Windows サービスの実行に使用するユーザー アカウントをこのグループに追加し、すべてのユーザー アカウントでグループの読み取りアクセス許可を付与できます。 これを行うには、次の手順を実行します。

注:

次の手順に従うには、ドメインに対する管理者権限が必要です。

  1. [スタート] ボタンをクリックして、[プログラム]、[管理ツール] の順にポイントし、[Active Directory ユーザーとコンピューター] をクリックします。
  2. [Active Directory ユーザーとコンピューター] ウィンドウの左側のウィンドウで、DomainName を展開します。
  3. [ ユーザー] を右クリックし、[ 新規] をポイントし、[ グループ] をクリックします。
  4. [ 新しいオブジェクト - グループ ] ダイアログ ボックスで、[ グループ名 ] ボックスに「MyAuthZGrp」と入力します。
  5. [ グループ スコープ] で[ ドメイン ローカル ] オプションを選択し、[OK] をクリック しますMyAuthZGrp グループが右側のウィンドウに表示される場合があります。
  6. Active Directory ユーザーとコンピューター ウィンドウの左側のウィンドウで、[ユーザー] フォルダーを右クリックし、[プロパティ] をクリックします。
  7. [ ユーザーのプロパティ ] ダイアログ ボックスで、[ セキュリティ ] タブをクリックします。
  8. [追加] をクリックします。
  9. [ ユーザー、コンピューター、またはグループの選択 ] ダイアログ ボックスで、手順 5 で作成したグループを選択します。
  10. [追加] をクリックし、[OK] をクリックします。
  11. 手順 9 で選択したユーザー アカウントに 読み取り アクセス許可を付与します。

Microsoft Windows Server 2003 ドメインの場合

ドメインが Windows 2000 の機能レベルにある場合、EVERYONE グループには、すべてのユーザー アカウントとグループの TGGAU 属性に対する読み取りアクセス許可があります。 そのため、Reporting Service サービス アカウントには、電子メール サブスクリプションを作成したユーザー アカウントに対する適切なアクセス許可があります。

ドメインが Windows Server 2003 の機能レベルにある場合、Windows 承認アクセス グループ (WAA グループ) には、すべてのユーザー アカウントとグループの TGGAU 属性に対する読み取りアクセス許可があります。 したがって、Reporting Services サービス アカウントを WAA グループに追加した場合、Reporting Services サービス アカウントには、電子メール サブスクリプションを作成できるユーザー アカウントの TGGAU 属性に対する読み取りアクセス許可があります。

Reporting Services サービス アカウントを WAA グループに追加するには、次の手順に従います。

  1. ドメイン コントローラーで、[スタート] をクリックし、[プログラム] をポイントし、[管理ツール] をポイントして、[Active Directory ユーザーとコンピューター] をクリックします。
  2. [Active Directory ユーザーとコンピューター] ウィンドウで [DomainName] を展開し、[ユーザー] または別の適切なorganizationユニット (OU) をクリックします。
  3. Reporting Services サービス アカウントをダブルクリックします。
  4. [ プロパティ ] ダイアログ ボックスで、[ メンバー] タブをクリックします。
  5. [メンバー] タブ 、[ 追加] をクリックします。
  6. [ グループの選択 ] ダイアログ ボックスで、[選択する オブジェクト名を入力します] の下に「Windows 承認アクセス グループ」と入力し、[OK] をクリック します
  7. Reporting Services サービスを再起動します。

Reporting Services サブスクリプションを作成できる特定のユーザー アカウントまたはグループに読み取りアクセス許可を付与する

すべてのユーザー アカウントとグループの TGGAU 属性に読み取りアクセス許可を付与したくない場合があります。 代わりに、特定のユーザー アカウントまたはグループの TGGAU 属性に読み取りアクセス許可を付与することもできます。

注:

  • サブスクリプションの実行に使用Reporting Servicesユーザー アカウントは、サブスクリプションの作成時にレポート マネージャーにログオンする Windows ユーザー アカウントです。
  • Reporting Services サービス アカウントが WAA グループ内にある場合、これらの手順は必要ありません。
  • Reporting Servicesで電子メール サブスクリプションを作成できるすべてのユーザー アカウントまたはグループに対して、次の手順に従う必要があります。

特定のユーザー アカウントまたはグループの属性に TGGAU 読み取りアクセス許可を付与するには、次の手順に従います。

  1. ドメイン コントローラーで、[スタート] をクリックし、[プログラム] をポイントし、[管理ツール] をポイントして、[Active Directory ユーザーとコンピューター] をクリックします。
  2. [ 表示 ] メニューで、[ 高度な機能 ] 項目が選択されていることを確認します。
  3. Reporting Services サブスクリプションを作成できるユーザー アカウントまたはグループをダブルクリックします。
  4. [ プロパティ] ダイアログ ボックスで [ セキュリティ] タブをクリックします。
  5. [セキュリティ] タブで [追加] をクリックします。
  6. [ユーザー、コンピューター、またはグループの選択] ダイアログ ボックスで、[選択するオブジェクト名を入力します] にReporting Servicesサービス アカウントを入力し、[OK] をクリックします
  7. [ プロパティ ] ダイアログ ボックスで、手順 6 の [ グループ名またはユーザー名] で追加したユーザー アカウントをクリックします。
  8. [アクセス許可 forUser] で、[読み取り] アクセス許可の横にある [チェックを許可する] ボックスをクリックし、[OK] をクリックします

注:

変更はすぐには有効にならない場合があります。

コンピューターでドメイン設定を構成する方法

ドメインの構成は、Microsoft Windows ドメインの操作モードによって異なります。 さらに、Windows ドメインの高度な機能を有効にする必要があります。 ドメイン コントローラーでドメイン操作モードを見つけ、高度な機能を有効にするには、次の手順に従います。

  1. [スタート] ボタンをクリックして、[プログラム]、[管理ツール] の順にポイントし、[Active Directory ユーザーとコンピューター] をクリックします。
  2. Active Directory ユーザーとコンピューター ウィンドウの左側のウィンドウで、DomainName を右クリックし、[プロパティ] をクリックします。
  3. ****DomainNameプロパティ ダイアログ ボックスで、[全般] タブの [ドメイン操作モード] テキスト ボックスを参照してください。

[ ドメイン操作モード ] テキスト ボックスには、ドメインが現在使用しているドメイン操作モードが表示されます。 4. [Active Directory ユーザーとコンピューター] ウィンドウの左側のウィンドウで、[DomainName] をクリックします。 5. [ 表示 ] メニューの [ 高度な機能] をクリックします。 ユーザー アカウントの承認にアクセスする必要がある API の詳細については、「 一部のアプリケーションと API では、アカウント オブジェクトの認証情報へのアクセスが必要です」を参照してください。