共用方式為


伺服器設定:跨資料庫擁有權鏈結

適用於:SQL Server

使用選項 cross db ownership chaining 來設定 SQL Server 執行個體的跨資料庫擁有權鏈結。

此伺服器選項允許您在資料庫層級控制跨資料庫擁有權鏈結,或允許所有資料庫的跨資料庫擁有權鏈結:

  • 當執行個體的 關閉 (cross db ownership chaining) 時0,會停用所有資料庫的跨資料庫擁有權鏈結。

  • 當執行個體開啟 (cross db ownership chaining) 時1,所有資料庫的跨資料庫擁有權鏈結都會開啟。

  • 您可以使用陳述式的SET子句,為ALTER DATABASE個別資料庫設定跨資料庫擁有權鏈結。 如果您要建立新資料庫,您可以使用陳述式設定 CREATE DATABASE 新資料庫的跨資料庫擁有權鏈結選項。

    cross db ownership chaining除非 SQL Server 執行個體裝載的所有資料庫都必須參與跨資料庫擁有權鏈結,而且您知道此設定的安全性影響,否則不建議設定為 1

檢查跨資料庫擁有權鏈結的狀態

若要判斷跨資料庫擁有權鏈結的目前狀態,請執行下列查詢:

SELECT is_db_chaining_on,
       name
FROM sys.databases;

結果 表示 1 已啟用跨資料庫擁有權鏈結。

控制跨資料庫擁有權鏈結

開啟或關閉跨資料庫擁有權鏈結之前:

  • 您必須是 系統管理員 固定伺服器角色的成員,才能開啟或關閉跨資料庫擁有權鏈結。

  • 在關閉生產伺服器上的跨資料庫擁有權鏈結之前,請完整測試所有應用程式,包括協力廠商應用程式,以確保變更不會影響應用程式功能。

  • 如果您使用 cross db ownership chaining 指定RECONFIGURE,則可以在伺服器執行時變更sp_configure選項。

  • 如果您有需要跨資料庫擁有權鏈結的資料庫,建議的做法是 cross db ownership chaining 使用 sp_configure關閉執行個體的選項,然後使用 ALTER DATABASE 陳述式,針對需要跨資料庫擁有權鏈結的個別資料庫開啟跨資料庫擁有權鏈結。

安全風險

在 SQL Server 中啟用跨資料庫所有權鏈接,可能會帶來安全漏洞。 當此功能啟用時,擁有提升權限的本地資料庫使用者可利用所有權鏈化來提升權限,並有可能取得 系統管理員 的存取權限。

你應該避免在實例層啟用跨資料庫所有權鏈,並限制其僅用於受信任且相關的資料庫。