搜尋本站文章

2011-02-26

SQL Server 2008 介面區組態(Surface Area Configuration,SAC):啟用 Ad Hoc Distributed Queries。訊息 15281,SQL Server 已封鎖元件 'Ad Hoc Distributed Queries' 的 STATEMENT 'OpenRowset/OpenDatasource' 之存取,因為此元件已經由此伺服器的安全性組態關閉。

在 SQL Server 2008 版本上,若要執行 OPENROWSET 或是 OPENDATASOURCE 時,遭遇以下的錯誤訊息,並請參考下圖所示:
訊息 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