Sql-Server
從引用連結伺服器的不同伺服器中的備份恢復的視圖
我有 3 個 SQL 伺服器
X
和2 個Y
數據庫和. 有(許多)視圖在其定義中使用 4 級命名:Z``X.A``Y.B``X.A
SELECT ... FROM Y.B.SCHEMA.TABLE
由此我推斷其中
X
包含Y
. 我正在從備份文件恢復X.A
並從伺服器中恢復,所以我現在 在同一台伺服器上可用。但這些觀點顯然是由於不知道是什麼而失敗的。Y.B``Z``Z.A``Z.B``Z``Y
我希望這些視圖能夠在恢復的數據庫
Z.A
中工作,這樣它們就可以從Z.B
(而不是從Y.B
)獲取數據,而無需更改視圖(有很多這樣的視圖)。我不確定這是否可能。我可以Z
根據需要在伺服器上進行更改,但我沒有任何訪問權限X
和Y
. 視圖的使用者也只能訪問Z
.我考慮過定義一個同義詞
Y
inZ
指向,localhost
但似乎在創建新同義詞時我至少需要引用 schema 或 schema.table。或者我可以只使用伺服器名稱的同義詞嗎?我還考慮過定義一個名為
Y
in的連結伺服器Z
,但指向它自己。在這裡,我只能創建一個名為localhost
指向自身的連結伺服器,這無助於解決我的問題。這是可能嗎?我可以說服 SQL Server在視圖定義中引用
Z
時使用嗎?Y
同義詞對您的需要沒有用處,因為這需要更改視圖定義以指定兩部分名稱。
我還考慮過在 Z 中定義一個名為 Y 的連結伺服器,但指向它自己。在這裡,我只能使名為 localhost 的連結伺服器指向自身,這無助於解決我的問題。
Y
通過選擇“其他數據源”(而不是 SQL Server),然後指定 SQL Server 提供程序,可以使用 SSMS創建具有名稱的環回連結伺服器。這也可以通過 T-SQL 完成:EXEC master.dbo.sp_addlinkedserver @server = N'Y' , @srvproduct=N'' , @provider=N'SQLNCLI11' , @datasrc=N'.' , @catalog=N'YourDatabase';
您還需要根據您的要求配置連結伺服器安全上下文。