SQL Serverの OLEDB データソースからリモート データにアクセスするためのアクセス許可の構成
この記事では、SQL Server で または 機能を使用OPENROWSET
するアドホック クエリをOPENDATASOURCE
無効にする方法について説明します。
元の製品バージョン: SQL Server
元の KB 番号: 327489
概要
リモート SQL Server インスタンスを含むリモート OLEDB プロバイダーからデータを接続してアクセスするには、アドホック メソッドとして SQL Server の または OPENDATASOURCE
ステートメントを使用OPENROWSET
できます。 これらのステートメントを使用して OLE DB データ ソースからリモート データにアクセスできるのは、指定されたプロバイダーに 対して DisallowAdhocAccess レジストリ オプションが明示的に 0 に設定され、 アドホック分散クエリ の高度な構成オプションが有効になっている場合のみです。 これらのオプションが設定されていない場合、既定の動作ではアドホック アクセスは許可されません。
この記事では、SQL Server Management Studioとレジストリの設定を使用して DisallowAdhocAccess を構成する方法と、既定の動作について詳しく説明します。
SQL Server Management Studioを使用したアドホック アクセスの無効化
DisallowAdHocAccess
SQL Server Management Studio (SSMS) でプロバイダーのプロパティを指定する
SSMS を開き、[リンク サーバー] の下の [プロバイダー] を展開します。
使用する OLE DB プロバイダーをクリックして選択し、[ プロバイダー オプション] ボタンを選択します。
下にスクロールし、[ アドホック アクセスを許可しない ] チェック ボックスをオンにし、[ OK] を選択します。
レジストリ エディターを使用したアドホック アクセスの無効化
重要
このセクション、方法、またはタスクには、レジストリの編集方法が記載されています。 レジストリを誤って変更すると、深刻な問題が発生することがあります。 レジストリを変更する際には十分に注意してください。 保護を強化するため、レジストリを変更する前にレジストリをバックアップします。 こうしておけば、問題が発生した場合にレジストリを復元できます。 レジストリをバックアップおよび復元する方法の詳細については、「Windows でレジストリをバックアップおよび復元する方法」を参照してください。
リンク サーバーを保存した後、 DisallowAdHocAccess
プロパティはレジストリ設定でのみ設定できます。
DisallowAdHocAccess 値を追加する
値を追加するには、次の DisallowAdHocAccess
手順に従います。
レジストリ エディターを起動します。
レジストリ内のキーを見つけて選択します: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Providers<ProviderName>
例: Microsoft OLEDB Provider for ODBC ドライバーのこれを変更しようとしている場合、キーは次のようになります。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Providers\MSDASQL
[ 編集 ] メニューの [ 値の追加] を選択し、次のレジストリ値を追加します。
Value name: DisallowAdHocAccess Data type: REG_DWORD Radix: Hex Value data: 1
レジストリ エディターを終了します。
アドホック リモート アクセスを有効にする
アドホック分散クエリの高度な構成オプションが有効になっていることを確認したら、指定したプロバイダーの DisallowAdhocAccess レジストリ オプションを 0 に設定する必要があります。
既存 DisallowAdHocAccess
の値を変更するには、次の手順に従います。
レジストリ エディターを起動します。
レジストリ内のキーの
DisallowAdHocAccess
下にある値を見つけて選択します: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Providers<ProviderName>例:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Providers\Microsoft.ACE.OLEDB.12.0
[ 編集 ] メニューの [DWORD] を選択し、「 1」と入力し、[ OK] を選択します。
レジストリ エディターを終了します。 名前付きインスタンスの場合、レジストリ キーは異なります。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\<Instance Name>\Providers\<ProviderName>
再起動の要件
値が DisallowAdHocAccess
1 から 0 に変更された場合、SQL サービスを再起動する必要はありません。一方、 0 から 1 への変更では、有効にするために行われた変更に対して SQL サービスを再起動する必要があります。
既定の動作
と OPENDATASOURCE
を使用したOPENROWSET
リモート OLE BD データ ソースのアドホック アクセスは既定で無効になっており、追加の構成は必要ありません。 このリモート アクセスが明示的に有効になっている場合にのみ、この記事で説明されている手順を使用する必要があります。
注:
既定の設定では、アドホック クエリでこれらの関数を呼び出そうとすると、次のようなエラー メッセージが表示されます:Server: Msg 7415、Level 16、State 1、Line 1 OLE DB プロバイダー 'Microsoft.Jet.OLEDB.4.0' へのアドホック アクセスが拒否されました。 リンク サーバーを介してこのプロバイダーにアクセスする必要があります。
つまり、特定の OLE DB プロバイダーのプロパティを DisallowAdHocAccess
1 に設定した場合、特定の OLE DB プロバイダーに対して定義済みのリンク サーバーセットアップを使用する必要があります。 そのプロバイダーをまたは 関数に参照するアドホック 接続文字列をOPENROWSET
OPENDATASOURCE
渡すことができなくなります。
関連項目
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示