現象

次のような状況で問題が発生します。

  • Windows Vista またはそれ以降のオペレーティング システムを実行しているシステムにインストールされている SQL Server のインスタンスがあります。

  • SQL Server のこのインスタンスでは、データ ソースの ole DB プロバイダーを使用して、ole DB データ ソースへのリンク サーバーを構成します。

  • OLEDB プロバイダーは、SQL Server プロセスの外部でインスタンス化するのに設定されます。通常これは、SQL ネイティブ クライアント以外の ole DB プロバイダーのほとんどの既定値です。これは、SQL Server の管理 Studio では、プロバイダーのプロパティを使用して設定できる [ inprocess 許可] オプションによって制御できます。

  • 使用するリンク サーバーのセキュリティが構成されている、になるログインの現在のセキュリティ コンテキストを使用してオプションです。

このシナリオでは、非特権ユーザー ログを SQL Server に Windows 認証を使用してをインスタンス化し、リンク サーバーにアクセスしようとしていますが発生すると、次のようなエラー メッセージ。

メッセージ 7399、レベル 16、状態 1、行 1The の OLE DB プロバイダー < OLEDB プロバイダー名 > < リンク サーバー名 > のリンク サーバーに対しては、エラーを報告しました。プロバイダーは、エラーに関する情報を取得できませんでした。Msg 7330、レベル 16、状態 2、行の 1Cannot は、リンク サーバーの OLE DB プロバイダー < OLEDB プロバイダー名 > からローをフェッチします。

注: このコンテキストでは、権限のないユーザーが標準ユーザーが、Windows レベルのアクセス権限のグループに属していません (例: 管理者)

原因

プロセスが OLE DB プロバイダーを実行すると、OLE DB インターフェイス リモート処理 Dll (msdaps.dll) は、OLE DB コンシューマーが存在するプロキシ側のプロセスと OLE DB プロバイダーが格納されているスタブ側のプロセス間の通信を処理します。現在の実装では。OLE DB リモート処理では、OLE DB 行セット データを送信するのに名前付きファイル マッピング オブジェクトを使用します。Vista またはそれ以降のオペレーティング システムを実行しているシステムでは、プロキシとスタブ側実行に異なるセッションでSession 0 の分離のためされ、したがって OLE DB リモート処理する必要がありますグローバル プロキシ/スタブの通信に使用これらのシステムで。ただし、ユーザー アカウントに指定されたリンク サーバー構成では、グローバル ファイル マッピング オブジェクトを作成するための十分な特権がないため、プロキシ/スタブの通信を開始できない現象で説明したエラー メッセージこの資料のセクションです。

回避策

次の方法のいずれかの方法を使用して問題を回避できます:回避策 1: インプロセスで実行するのには ole DB プロバイダーを構成します。注: 4.0 より前のバージョンの .Net 版をベースにする ole DB プロバイダーに対してこの回避策を使うことはできません。回避策 2: ユーザーに"グローバル オブジェクトの作成] ユーザー権利を割り当てます。これを行うには、以下の手順を実行します。

  1. [スタート] ボタン、 [管理ツール] をポイントし、[ローカル セキュリティ ポリシー] をクリックします。

  2. [ローカル ポリシー] を展開し、[ユーザー権利の割り当て] をクリックします。

  3. 右側のウィンドウでは、グローバル オブジェクトの作成をダブルクリックします。

  4. ローカル セキュリティ ポリシーの設定] ダイアログ ボックスで、[追加] をクリックします。

  5. [ユーザーまたはグループ] ダイアログ ボックスで、追加、追加] をクリックし、[ OK] をクリックするユーザー アカウントをクリックします。

  6. [OK] をクリックします。

状態: マイクロソフトは、現在作業中の製品の将来のリリースでこの問題を修正します。

ヘルプを表示

スキルを磨く
トレーニングの探索
新機能を最初に入手
Microsoft Insider に参加する

この情報は役に立ちましたか?

言語の品質にどの程度満足していますか?
どのような要因がお客様の操作性に影響しましたか?

ご意見をいただきありがとうございます。

×