根據預設,SQL Server 不允許使用 OPENROWSET 和 OPENDATASOURCE 的臨機作分散式查詢。 當此選項設定為 1 時,SQL Server 允許臨機作存取。 當此選項未設定或設定為 0 時,SQL Server 不允許臨機作存取。
臨時分散式查詢會使用 OPENROWSET 和 OPENDATASOURCE 函數來連接到使用 OLE DB 的遠端資料來源。 OPENROWSET 和 OPENDATASOURCE 只能用來參考不常存取的 OLE DB 數據源。 對於將多次存取的任何數據源,請定義連結的伺服器。
這很重要
啟用特定名稱的使用表示任何已驗證的 SQL Server 登入都可以存取提供者。 SQL Server 系統管理員應該為任何本機登入安全地存取的提供者啟用這項功能。
備註
未啟用 臨機分散式查詢 時嘗試建立臨機連線會導致錯誤:Msg 7415、Level 16、State 1、Line 1
已拒絕臨時存取 OLE DB 提供者 『Microsoft.ACE.OLEDB.12.0』。 您必須透過連結伺服器來存取此提供者。
範例
下列範例會啟用臨時分散式查詢,接著使用 OPENROWSET 函式查詢名為 Seattle1 的伺服器。
sp_configure 'show advanced options', 1;
RECONFIGURE;
sp_configure 'Ad Hoc Distributed Queries', 1;
RECONFIGURE;
GO
SELECT a.*
FROM OPENROWSET('SQLNCLI', 'Server=Seattle1;Trusted_Connection=yes;',
'SELECT GroupName, Name, DepartmentID
FROM AdventureWorks2012.HumanResources.Department
ORDER BY GroupName, Name') AS a;
GO
另請參閱
伺服器組態選項 (SQL Server)
連結的伺服器 (Database Engine)
OPENROWSET (Transact-SQL)
OPENDATASOURCE (Transact-SQL)
sp_addlinkedserver (Transact-SQL)