當某個資料庫中的某一過程依賴另乙個資料庫中的物件時,會發生跨資料庫所有權鏈結。
跨資料庫所有權鏈與單個資料庫中的所有權鏈結的工作方式相同,不同之處在於完整的所有權鏈要求將所有物件擁有者對映為同一登入帳戶。
如果同一登入帳戶擁有源資料庫中的源物件和目標資料庫中的目標物件,則
sql server
不會檢查對目標物件的許可權。
預設情況下為關
從sql 2000 sp3
開始,跨資料庫的所有權鏈結預設情況下為關。
microsoft
建議禁用跨資料庫所有權鏈結,因為它會使您面臨以下安全風險:
·資料庫所有者和
db_ddladmin
成員或db_owners
資料庫角色可建立其他使用者所擁有的物件。
這些物件的目標可能是其他資料庫中的物件。
這表示如果啟用跨資料庫所有權鏈結,您必須完全信任在所有資料庫中具有資料的這些使用者。·具有
create database
許可權的使用者可建立新資料庫以及附加現有資料庫。
如果啟用了跨資料庫所有權鏈結,則這些使用者可以從新建立的或他們建立的附加資料庫中訪問他們在其中沒有許可權的其他資料庫中的物件。
啟用跨資料庫所有權鏈結
只能在完全信任高階許可權使用者的環境中啟用跨資料庫所有權鏈結。
可在設定所有資料庫,或使用
transact-sql
命令sp_configure
和sp_dboption
選擇性地設定特定資料庫期間,配置跨資料庫所有權鏈結。
sql server 2000 sp3
引入了cross db ownership chaining
選項作為一項安全增強功能,它可允許您配置跨資料庫所有權鏈結。
若要選擇性地配置
sql server 2005
或更高版本中的跨資料庫所有權鏈結,但該鏈結對於伺服器未開啟,請使用
sp_configure
開啟該鏈結。
然後,使用包含
set db_chaining on
的alter database
命令僅為需要跨資料庫所有權鏈結的資料庫配置跨資料庫所有權鏈結 。
動態sql
在執行了動態建立的
sql
語句的情況下跨資料庫所有權鏈結將不起作用,除非同一使用者同時存在於兩個資料庫中。
您可以通過建立訪問另一資料庫中資料的儲存過程並使用存在於兩個資料庫中的證書對過程簽名,在
sql server 2005
中解決此問題。
這可為使用者提供訪問該過程所使用的資料庫資源的許可權,而不必向他們授予資料庫訪問權或許可權。
以上內容**:
SQLSERVER 啟用跨庫查詢指令碼
啟用ad hoc distributed queries的方法,執行下面的查詢語句就可以了 exec sp configure show advanced options 1 reconfigure exec sp configure ad hoc distributed queries 1 rec...
SQL Server中查詢ORACLE的資料
通過鏈結伺服器,sql server 資料庫引擎 和 azure sql 資料庫託管例項可從遠端資料來源中讀取資料,並針對 sql server 例項之外的 ole db 資料來源等遠端資料庫伺服器執行命令。在本場 chat 中,會講到如下內容 適合人群 從 sql server 中查詢 oracl...
SQLServer中跨伺服器跨資料庫之間的資料操作
首先必須理解乙個概念 select from sys.servers 檢視系統表,看原來的伺服器名 要想跨域就必須在以上資訊中可以檢索到!怎樣新增?建立鏈結伺服器 execsp addlinkedserver itsv sqloledb 遠端伺服器名或ip位址 execsp addlinkedsrv...