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) でプロバイダーのプロパティを指定する

  1. SSMS を開き、[リンク サーバー] の下の [プロバイダー] を展開します。

  2. 使用する OLE DB プロバイダーをクリックして選択し、[ プロバイダー オプション] ボタンを選択します。

  3. 下にスクロールし、[ アドホック アクセスを許可しない ] チェック ボックスをオンにし、[ OK] を選択します

レジストリ エディターを使用したアドホック アクセスの無効化

重要

このセクション、方法、またはタスクには、レジストリの編集方法が記載されています。 レジストリを誤って変更すると、深刻な問題が発生することがあります。 レジストリを変更する際には十分に注意してください。 保護を強化するため、レジストリを変更する前にレジストリをバックアップします。 こうしておけば、問題が発生した場合にレジストリを復元できます。 レジストリをバックアップおよび復元する方法の詳細については、「Windows でレジストリをバックアップおよび復元する方法」を参照してください。

リンク サーバーを保存した後、 DisallowAdHocAccess プロパティはレジストリ設定でのみ設定できます。

DisallowAdHocAccess 値を追加する

値を追加するには、次の DisallowAdHocAccess 手順に従います。

  1. レジストリ エディターを起動します。

  2. レジストリ内のキーを見つけて選択します: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Providers<ProviderName>

    例: Microsoft OLEDB Provider for ODBC ドライバーのこれを変更しようとしている場合、キーは次のようになります。

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Providers\MSDASQL

  3. [ 編集 ] メニューの [ 値の追加] を選択し、次のレジストリ値を追加します。

    Value name: DisallowAdHocAccess
    Data type: REG_DWORD
    Radix: Hex
    Value data: 1
    
  4. レジストリ エディターを終了します。

アドホック リモート アクセスを有効にする

アドホック分散クエリの高度な構成オプションが有効になっていることを確認したら、指定したプロバイダーの DisallowAdhocAccess レジストリ オプションを 0 に設定する必要があります。

既存 DisallowAdHocAccess の値を変更するには、次の手順に従います。

  1. レジストリ エディターを起動します。

  2. レジストリ内のキーの DisallowAdHocAccess 下にある値を見つけて選択します: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Providers<ProviderName>

    例: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Providers\Microsoft.ACE.OLEDB.12.0

  3. [ 編集 ] メニューの [DWORD] を選択し、「 1」と入力し、[ OK] を選択します

  4. レジストリ エディターを終了します。 名前付きインスタンスの場合、レジストリ キーは異なります。 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\<Instance Name>\Providers\<ProviderName>

再起動の要件

値が DisallowAdHocAccess1 から 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 プロバイダーのプロパティを DisallowAdHocAccess1 に設定した場合、特定の OLE DB プロバイダーに対して定義済みのリンク サーバーセットアップを使用する必要があります。 そのプロバイダーをまたは 関数に参照するアドホック 接続文字列をOPENROWSETOPENDATASOURCE渡すことができなくなります。

関連項目