適用於: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 中啟用跨資料庫所有權鏈接,可能會帶來安全漏洞。 當此功能啟用時,擁有提升權限的本地資料庫使用者可利用所有權鏈化來提升權限,並有可能取得 系統管理員 的存取權限。
你應該避免在實例層啟用跨資料庫所有權鏈,並限制其僅用於受信任且相關的資料庫。