訊息 15281,層級 16,狀態 1,行 1
SQL Server 已封鎖元件 'Ad Hoc Distributed Queries' 的 STATEMENT 'OpenRowset/OpenDatasource' 之存取,因為此元件已經由此伺服器的安全性組態關閉。
系統管理員可以使用 sp_configure 來啟用 'Ad Hoc Distributed Queries' 的使用。
如需有關啟用 'Ad Hoc Distributed Queries' 的詳細資訊,請參閱《SQL Server 線上叢書》中的<介面區組態>(Surface Area Configuration)。
在「介面區組態」部分,預設是將設定 「AdHocRemoteQueriesEnabled」功能給「停用」的。
根據預設,SQL Server 不允許使用 OPENROWSET 和 OPENDATASOURCE 進行特定分散式查詢。
當啟用選項時,SQL Server 就會允許特定存取。當此選項未設定或設定為 0 時,SQL Server 就不允許特定存取。
若要啟用「Ad Hoc Distributed Queries」這項功能,請參考以下的方式:
- 使用 SSMS 管理工具。
- 使用T-SQL:sp_configure。
(一)使用 SSMS 管理工具
使用 SQL Server Management Studio 中的「Facet」來設定啟用和停用 SQL Server 功能。
步驟01. 使用 SQL Server Management Studio,連接到目標的 SQL Server。
步驟02. 在 [物件總管] 中,點選目標伺服器,滑鼠右鍵,選擇「Facet」。請參考下圖所示:
步驟03. 在「檢視 Facet」視窗,在右邊的「Facet」區域,選擇「介面區組態」。
步驟04. 在右下角的「Facet屬性」區域,選擇所需要啟用或是停用的功能。請參考下圖所示:
步驟05. 點選「確定」,完成設定後,就可以直接使用,無需重新啟動 SQL Server。
(二)使用T-SQL
--01 查詢是否已經啟用 Ad Hoc Distributed Queries
SELECT name N'組態選項的名稱', value N'針對這個選項所設定的值', value_in_use N'這個選項目前有效的執行值',
description N'組態選項的描述'
FROM sys.configurations
WHERE name='Ad Hoc Distributed Queries'
--02 設定啟用 Ad Hoc Distributed Queries
USE master;
GO
EXEC sp_configure 'show advanced option', '1';
GO
RECONFIGURE
GO
--
EXEC sp_configure 'Ad Hoc Distributed Queries', '1'
RECONFIGURE WITH OVERRIDE
GO
/* 顯示的訊息
組態選項 'show advanced options' 從 1 變更為 1。請執行 RECONFIGURE 陳述式來安裝。
組態選項 'Ad Hoc Distributed Queries' 從 0 變更為 1。請執行 RECONFIGURE 陳述式來安裝。
*/
--03 再度查詢是否已經啟用 Ad Hoc Distributed Queries
SELECT name N'組態選項的名稱', value N'針對這個選項所設定的值', value_in_use N'這個選項目前有效的執行值',
description N'組態選項的描述'
FROM sys.configurations
WHERE name='Ad Hoc Distributed Queries'
參考資料:
SQL Server 2008 介面區組態(Surface Area Configuration,SAC):啟用 xp_cmdshell
http://sharedderrick.blogspot.com/2009/04/sql-server-2008-surface-area.html
SQL Server 2005 Surface Area Configuration(SAC,介面區組態)
http://sharedderrick.blogspot.com/2009/05/clr-sql-server-2005.html