INF: 跨資料庫擁有權鏈結 SQL Server 2000 Service Pack 3 中的行為變更

文章翻譯 文章翻譯
文章編號: 810474 - 檢視此文章適用的產品。
全部展開 | 全部摺疊

在此頁中

結論

Microsoft SQL Server Service Pack 3 (SP3) 提供新的安全性增強相關設定跨資料庫擁有權鏈結在安裝期間 啟用跨資料庫擁有權鏈結的所有資料庫 的選項。本文將告訴您跨資料庫擁有權鏈結在 SQL Server 2000 SP3 中的行為。使用這個新的選項中,您可以控制您允許跨資料庫擁有權鏈結。預設情況下,已停用此選項。Microsoft 建議您使用 [預設] 選項因為它讓您的資料庫伺服器更安全。

其他相關資訊

擁有權鏈結

預設情況下,所有資料庫物件會都有擁有者。當物件 (如檢視、 預存程序或使用者定義函數參考另一個物件時,已建立擁有權鏈結。比方說資料表是由同一個使用者所擁有。當同一個使用者擁有來源物件、 檢視、 預存程序或使用者定義函式所有目標 (基準資料表、 檢視表或其他物件) 的物件擁有權鏈結稱為未中斷。當擁有權鏈結未中斷時 SQL Server 會檢查來源物件上,而不是在目標物件的權限。

跨資料庫擁有權鏈結

當來源物件相依於另一個資料庫中的物件,跨資料庫擁有權鏈結。跨資料庫擁有權鏈結運作方式與擁有權鏈結在一個資料庫中相同的方式,除了未中斷的擁有權鏈結根據對應到相同的登入帳戶的所有物件擁有者。因此,跨資料庫擁有權鏈結中如果來源物件在來源資料庫和目標資料庫中的 [目標] 物件擁有相同的登入帳戶的 SQL Server 並不會檢查目標物件的權限。

如果您有一個以上的應用程式所使用的資料庫,用應用程式呼叫預存程序或另一個資料庫中的物件為基礎的資料庫中的檢視然後跨資料庫擁有權鏈結。依賴跨資料庫擁有權鏈結的應用程式可能會產生權限被拒絕的錯誤,如果跨資料庫擁有權鏈結] 選項已關閉。

跨資料庫擁有權鏈結的相關風險

Microsoft 建議您停用跨資料庫擁有權鏈結因為具有高度權限的使用者可以執行之動作的選項:
  • 資料庫擁有者和 db_ddladmindb_owners 資料庫角色的成員可以建立其他使用者所擁有的物件。 這些物件可以具有潛在目標中其他資料庫物件。這表示如果您啟用跨資料庫擁有權鏈結,您必須完全信任這些使用者的所有資料庫中的資料。若要識別 db_ddladmin 和目前的資料庫中的 [db_owners] 角色的成員,請執行下列 Transact-SQL 命令:
    exec sp_helprolemember 'db_ddladmin' exec sp_helprolemember 'db_owner'
  • 建立資料庫的權限的使用者可以建立新的資料庫和附加現有的資料庫。如果啟用跨資料庫擁有權鏈結這些使用者可以從新建立或附加資料庫存取其他資料庫中的物件。
即使 Microsoft 建議您關閉跨資料庫擁有權鏈結的最大安全性,有某些環境下,您可以完全信任具有高度權限的使用者,; 因此,您可以啟用以符合特定的應用程式需求的特定資料庫的跨資料庫擁有權。

如何設定跨資料庫擁有權鏈結在安裝期間

在 Microsoft SQL Server Service Pack 3 (SP3) 安裝程式中已加入新的對話方塊允許系統管理員,以控制跨資料庫擁有權鏈結將會被允許。如果您在 SQL Server 2000 SP3 安裝期間選取 [啟用跨資料庫擁有權鏈結的所有資料庫],您要啟用此選項跨所有資料庫。這是預設行為,在 SQL Server 2000 SP3 之前。不管您在安裝期間所選取的選項,您可以稍後修改伺服器和資料庫支援跨資料庫擁有權鏈結使用 Transact-SQL 命令,或從 SQL Server 企業管理員。

如何設定跨資料庫擁有權鏈結安裝後

若要將跨資料庫擁有權鏈結設定使用 [sp_configuresp_dboption 預存程序中新的選項]。

附註如果您卸離,並再重新附加資料庫必須重新啟用跨資料庫擁有權鏈結。
  • 設定跨資料庫擁有權鏈結利用 Transact-SQL 命令:
    • 設定跨資料庫擁有權鏈結以 sp_configure 的新 交叉 DB 擁有權鏈結 選項支援 SQL Server 執行個體。當此選項設定為 0 時,您可以控制跨資料庫擁有權鏈結藉由使用 sp_dboption 的 [在資料庫層級。當此選項設定為 1 時,您不能限制跨資料庫擁有權鏈結。這是預先 SQL Server 2000 SP3 行為。如果您變更這個選項,包含 RECONFIGURE 選項若要重新執行個體設定而不必重新啟動它。比方說允許跨資料庫擁有權鏈結所有資料庫中使用下列命令:
      EXEC sp_configure 'Cross DB Ownership Chaining', '1'; RECONFIGURE 
      
    • 設定跨資料庫擁有權鏈結在資料庫層級以 sp_dboption 的新 資料庫鏈結 選項。當此選項設定為 false 時,資料庫無法參與跨資料庫擁有權鏈結為來源或目標資料庫。當此選項設定為 true 資料庫時,可以參與跨資料庫擁有權鏈結。根據預設值,這個選項是對所有使用者資料庫,則為 False,套用 SQL Server 2000 SP3 之後。下列命令會啟用跨資料庫擁有權鏈結北風資料庫:
      EXEC sp_dboption 'Northwind', 'db chaining', 'true'

    sp_configure跨資料庫擁有權鏈結] 選項設定為 0 時,只會顯示 sp_dboption 的效果。而且,以便跨資料庫擁有權鏈結在資料庫層級,您必須啟用此選項在來源及目標資料庫。
  • 設定跨資料庫擁有權鏈結使用 SQL 企業管理員:
    • 若要設定這個選項對所有資料庫,請依照下列步驟執行:
      1. 以滑鼠右鍵按一下 <server>.
      2. 按一下以選取 [內容]
      3. 按一下 [安全性]。
      4. 按一下以選取 允許跨資料庫擁有權鏈結 中的 擁有權鏈結 區段。
      5. 按一下 [確定]。提示您停止並重新啟動 SQL Server 服務。
      6. 按一下 [確定]
    • 若要以便在資料庫層級這個選項請依照下列步驟執行:
      1. 以滑鼠右鍵按一下 <database>.
      2. 按一下以選取 [內容]
      3. 按一下 [選項]。
      4. 按一下以選取 允許跨資料庫擁有權鏈結 在 [設定] 區段

屬性

文章編號: 810474 - 上次校閱: 2007年10月29日 - 版次: 4.3
這篇文章中的資訊適用於:
  • Microsoft SQL Server 2000 Service Pack 3
關鍵字:?
kbmt kbproductlink kbinfo kbsysadmin kbupgrade kbsqlserv2000sp3fea KB810474 KbMtzh
機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:810474
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。

提供意見

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com