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

適用於: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 設定為 1,除非 SQL Server 執行個體所承載的所有資料庫都必須參與跨資料庫擁有權鏈結,而且您已了解此設定的安全性影響。

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

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

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

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