伺服器組態選項:特定分散式查詢
適用於:SQL Server
根據預設,SQL Server 不允許使用 OPENROWSET
和 OPENDATASOURCE
的特定分散式查詢。 當將此選項設定為 1
時,SQL Server 允許特定存取。 當未設定此選項或將其設定為 0
時,SQL Server 不允許特定存取。
臨機操作分散式查詢會使用 OPENROWSET
和 OPENDATASOURCE
函數,連接到使用 OLE DB 的遠端資料來源。 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 受控執行個體
如需參考,請參閱功能比較:Azure SQL Database 與 Azure SQL 受控執行個體。
範例
下列範例會啟用 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