2010年2月11日 星期四

MSSQL 無法執行分散式查詢 或 跨主機查詢資料庫時

在使用跨主機查詢資料庫遇到的問題,SELECT之後出現

SQL Server 已封鎖元件 'XXX XXX XXXXXXXX' 的 XXXXXXX 'xxx xxx xxxxxxx'之存取,因為此元件已經由此伺服器的安全性組態關閉。系統管理員可以使用 sp_configure 來啟用 'XXX XXXX XXXXXX的使用。如需有關啟用 'XXX XXX XXXXXX'的詳細資訊,請參閱《SQL Server 線上叢書》中的<介面區組態>(Surface Area Configuration)。



SQL Server 已封鎖元件 'Ad Hoc Distributed Queries' 的 STATEMENT 'OpenRowset/OpenDatasource' 之存取,因為此元件已經由此伺服器的安全性組態關閉。系統管理員可以使用 sp_configure 來啟用 'Ad Hoc Distributed Queries' 的使用。如需有關啟用 'Ad Hoc Distributed Queries' 的詳細資訊,請參閱《SQL Server 線上叢書》中的<介面區組態>(Surface Area Configuration)。

路徑:
英文版:【開始】→【程式集】→【Microsoft SQL Server 2005】→【 Configuration Tools】→【SQL Server Surface Area Configuration】
中文版:開始 → 程式集 → Microsoft SQL Server 2005 → 組態工具 → SQL Server 介面區組態

設定:
英文版:點選“Surface Area Configuration for Featrues”後,再點選MSSQLSERVER↘Database Engine↘Ad Hoc Remote Querise,在右邊即會看到《Enable OPENROWSET and OPENDATASOURCE support選項》,預設是沒有勾選的。將其勾選後,再按Apply,確定即可。
中文版:選【功能的界面區組態】勾選 【啟用 OPENROWSET 和 OPENDATASOURCE 支援】




SQL 2000的話

若你確認需要啟用或是停用介面區組態上的功能,請參考以下的步驟:
使用 SQL Server Management Studio 中的「Facet」來設定啟用和停用 SQL Server 功能。
1. 使用 SQL Server Management Studio,連接到目標的 SQL Server。
2. 在 [物件總管] 中,點選目標伺服器,滑鼠右鍵,選擇「Facet」。
3. 在「檢視 Facet」視窗,在右邊的「Facet」區域,選擇「介面區組態」。
4. 在右下角的「Facet屬性」區域,選擇所需要啟用或是停用的功能。

在「介面區組態」部分,可以設定的功能有:
1. 「AdHocRemoteQueriesEnabled」
是否要啟用「特定分散式查詢(Ad Hoc Distributed Queries)」。根據預設,SQL Server 不允許使用 OPENROWSET 和 OPENDATASOURCE 進行特定分散式查詢。當啟用選項時,SQL Server 就會允許特定存取。當此選項未設定或設定為 0 時,SQL Server 就不允許特定存取。

2. 「ClrIntegrationEnabled」
使用「clr enabled」選項來指定 SQL Server 是否能執行使用者組件。
WOW64 伺服器必須重新啟動之後,對此設定的變更才能生效。對於其他伺服器類型,則不需要重新啟動。

3. 「DatabaseMailEnabled」
是否要啟用「Database Mail XP」選項
設定立即生效,伺服器不必停止再重新啟動。

4. 「OleAutomationEnabled」
是否要啟用啟用「OLE Automation Procedures」選項。
使用 Ole Automation Procedures 選項可指定 OLE Automation 物件是否可在 Transact-SQL 批次內部啟動。您也可以使用以原則為基礎的管理或 sp_configure 預存程序來設定這個選項。
啟用 OLE Automation Procedures 時,對 sp_OACreate 的呼叫會啟動 OLE 共用執行環境。

5. 「RemoteDacEnabled」
是否啟用「remote admin connections」選項。
SQL Server 會提供專用管理員連接 (DAC)。
DAC 可讓系統管理員存取執行中的伺服器,如此一來,即使伺服器遭到鎖定或在異常狀態中執行,而且未回應 Database Engine 連接時,也能執行診斷功能或 Transact-SQL 陳述式,或針對伺服器上的問題進行疑難排解。
依預設,只能從伺服器上的用戶端使用 DAC。

根據預設,DAC 只會接聽回送 IP 位址 (127.0.0.1)、通訊埠 1434。

6. 「ServiceBrokerEndpointActive」
依預設,SQL Server 的執行個體不包含 Service Broker 端點。
因此,Service Broker 預設不會透過網路傳送或接收訊息。您必須建立 Service Broker 端點,以在 SQL Server 執行個體以外傳送或接收訊息。

端點是 SQL Server 物件,代表 SQL Server 透過網路進行通訊的能力。每個端點都支援特定類型的通訊。例如,HTTP 端點可讓 SQL Server 處理特定的 SOAP 要求。Service Broker 端點會設定 SQL Server,以透過網路傳送和接收 Service Broker 訊息。

Service Broker 端點提供了傳輸安全性和訊息轉送的選項,並在特定 TCP 通訊埠編號上進行接聽。

7. 「SoapEndpointsEnabled」
是否啟用「SOAP 端點」選項。

8. 「SqlMailEnabled」
使用「SQL Mail XPs」選項,啟用此伺服器的 SQL Mail。設定立即生效,伺服器不必停止再重新啟動。
SQL Mail 已經在 SQL Server 2005版本,被 Database Mail所取代。

未來的 Microsoft SQL Server 版本將移除這項功能。
請避免在新的開發工作中使用這項功能,並規劃修改目前使用這項功能的應用程式。. 若要從 Microsoft SQL Server 傳送郵件,請使用 Database Mail。

9. 「WebAssistantEnabled」
是否可以執行「Web 助理預存程序(Web Assistant Procedures)」來產生 HTML 程式碼。
在 SQL Server 2005部分已經被取代。

10. 「XPCmdShellEnabled」
是否啟用xp_cmdshell 選項。

此為是 SQL Server 2005 所推出的新功能,為伺服器的組態選項,可讓系統管理員控制 xp_cmdshell 擴充預存程序是否可在系統上執行。
根據預設,xp_cmdshell 選項會在新安裝上停用,而且可以使用以原則為基礎的管理或執行 sp_configure 系統預存程序來啟用。

沒有留言:

張貼留言