設定許可權以從 SQL Server 中的 OLEDB 資料源存取遠端數據

本文說明如何停用在 SQL Server 中使用 OPENROWSET 或 OPENDATASOURCE 功能的特定查詢。

原始產品版本:SQL Server
原始 KB 編號: 327489

摘要

您可以使用 OPENROWSET SQL Server 中的 或 OPENDATASOURCE 語句作為特定方法,從遠端 OLEDB 提供者連接和存取數據,包括遠端 SQL Server 實例。 只有當指定提供者的 DisallowAdhocAccess 登錄選項明確設定為 0,且已啟用臨機操作分散式查詢進階組態選項時,這些語句才能從 OLE DB 數據源存取遠端數據。 如果未設定這些選項,預設行為不允許臨機操作存取。

本文提供透過 SQL Server Management Studio 和登錄設定以及預設行為來設定 DisallowAdhocAccess 的其他詳細數據。

使用 SQL Server Management Studio 停用臨機操作存取

在 DisallowAdHocAccess SQL Server Management Studio 中指定提供者的屬性 (SSMS)

  1. 開啟 [SSMS],然後展開 [鏈接的伺服器] 底下的 [提供者]。

  2. 按兩下以選取您想要使用的 OLE DB 提供者,然後選取[ 提供者選項 ] 按鈕。

  3. 向下卷動並選取 [ 不允許臨機操作存取 屬性] 複選框,然後選取 [ 確定]。

使用註冊表編輯器停用臨機操作存取

重要

這個章節、方法或工作包含修改登錄的步驟。 然而,不當修改登錄可能會發生嚴重的問題。 因此,請務必小心執行下列步驟。 為增加保護起見,請先備份登錄,再進行修改。 然後,如果發生問題,您就可以還原登錄。 如需備份和還原登錄的詳細資訊,請參閱如何在 Windows 中備份及還原登錄。

儲存連結的伺服器之後, DisallowAdHocAccess 屬性只能透過登錄設定來設定。

新增 DisallowAdHocAccess 值

若要新增 DisallowAdHocAccess 值,請遵循下列步驟:

  1. 啟動 [登錄編輯程式]。

  2. 找出並選取登錄中的機碼: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Providers<ProviderName>

    範例:如果您嘗試針對 MICROSOFT OLEDB Provider for ODBC Drivers 變更此專案,索引鍵會是:

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Providers\MSDASQL

  3. 在 [編輯] 功能表上,選取 [新增值],然後新增此登錄值:

    Value name: DisallowAdHocAccess
    Data type: REG_DWORD
    Radix: Hex
    Value data: 1
    
  4. 結束登錄編輯程式。

啟用臨機操作遠程訪問

確定 已啟用臨機操作分散式查詢 進階組態選項之後,您必須將指定提供者的 DisallowAdhocAccess 登錄選項設定為 0 。

若要修改現有的 DisallowAdHocAccess 值,請遵循下列步驟:

  1. 啟動 [登錄編輯程式]。

  2. 找出並選取 DisallowAdHocAccess 登錄機碼底下的值: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Providers<ProviderName>

    範例:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Providers\Microsoft.ACE.OLEDB.12.0

  3. 在 [ 編輯 ] 功能表上,選取 [DWORD],輸入 1,然後選取 [ 確定]。

  4. 結束登錄編輯程式。 針對具名實例,登錄機碼不同: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\<Instance Name>\Providers\<ProviderName>

重新啟動需求

從 1 到 0 的值DisallowAdHocAccess變更不需要重新啟動 SQL 服務,而從 0 到 1 的變更必須重新啟動,才能讓變更生效。

預設行為

使用 OPENROWSET 和 OPENDATASOURCE 的遠端 OLE BD 數據源臨機操作存取預設為停用,而且不需要額外的設定。 只有在先前明確啟用此遠端訪問時,才需要使用本文中所討論的程式。

注意

使用預設設定時,如果您嘗試在臨機操作查詢中呼叫這些函式,您會收到類似下列訊息的錯誤訊息:伺服器:Msg 7415、Level 16、State 1、Line 1 Ad hoc 存取 OLE DB 提供者 'Microsoft.Jet.OLEDB.4.0' 已被拒絕。 您必須透過連結伺服器來存取此提供者。

換句話說,將 DisallowAdHocAccess 屬性設定為 1 的特定 OLE DB 提供者,您必須針對特定 OLE DB 提供者使用預先定義的連結伺服器設定。 您無法再傳入特定 連接字串,該 連接字串 參考該提供者給 OPENROWSET 或 函OPENDATASOURCE式。

另請參閱