サーバー構成: アドホック分散クエリ
適用対象: SQL Server
既定では、SQL Server では OPENROWSET
や OPENDATASOURCE
を使用したアドホック分散クエリは許可されません。 このオプションを 1
に設定すると、 SQL Server でアドホック アクセスを実行できます。 このオプションを設定しなかった場合または 0
に設定した場合は、 SQL Server でアドホック アクセスを実行できません。
アドホック分散クエリでは、OLE DB を使用するリモート データ ソースに接続するために、OPENROWSET
関数と OPENDATASOURCE
関数が使用されます。 OPENROWSET
および OPENDATASOURCE
は、アクセス頻度の低い OLE DB データ ソースを参照する目的のみに使用してください。 何度もアクセスするデータ ソースに対しては、リンク サーバーを定義してください。
アドホック名を使用できるようにすると、認証済み SQL Server アカウントであればプロバイダーにアクセスできるようになります。 SQL Server の管理者は、ローカル アカウントからアクセスされても安全なプロバイダーに対してのみ、この機能を有効にしてください。
解説
Ad Hoc Distributed Queries
を無効にしてアドホック接続を作成しようとすると、次のエラーが表示されます。
Msg 7415, Level 16, State 1, Line 1
Ad hoc access to OLE DB provider 'Microsoft.ACE.OLEDB.12.0' has been denied. You must access this provider through a linked server.
Azure SQL Database と Azure SQL Managed Instance
「機能の比較: Azure SQL Database と Azure SQL Managed Instance」を参照してください。
例
次の例では、Ad Hoc Distributed Queries
を有効にし、OPENROWSET
関数を使用して Seattle1
という名前のサーバーにクエリを実行します。
USE master;
GO
EXECUTE sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
EXECUTE sp_configure 'Ad Hoc Distributed Queries', 1;
GO
RECONFIGURE;
GO
SELECT a.*
FROM OPENROWSET ('MSOLEDBSQL', 'Server=Seattle1;Trusted_Connection=yes;', 'SELECT GroupName, Name, DepartmentID
FROM AdventureWorks2022.HumanResources.Department
ORDER BY GroupName, Name') AS a;
GO
EXECUTE sp_configure 'show advanced options', 0;
GO
RECONFIGURE;
GO