[英]Changing Database Names and Cross Database Queries In Stored Procedures
我有許多版本相關的相關數據庫。 不同版本的實例可以並排運行,由不同版本標識,即[NorhwindV1.1]和[NorhwindV1.2]可以與[SouthwindV1.1]和[SouthwindV1.2]一起位於同一服務器上。
有許多存儲過程可以進行跨數據庫查詢,即存在於NorthwindV1.1上,也存在於SouthwindV1.1中的查詢表中。 使用更改版本號管理數據庫名稱更改的最佳方法是什么,以便存儲過程查詢正確的數據庫版本?
謝謝,MagicAndi。
假設在數據庫之間查詢的表的數量是可管理的,您可以為這些表創建同義詞並在過程中使用同義詞。 然后,您只需要更改同義詞以在版本之間切換。
我只知道兩種方式,兩種方式都很糟糕。 第一種是使用動態SQL,如:
declare @db varchar(512)
set @db = 'NorthwindV1.1'
declare @sql varchar(max)
set @sql = 'select * from ' + @db + '.dbo.YourTable'
exec (@sql)
第二種是在機器上安裝SQL Server的多個實例。 像localhost\\v1.0
, localhost\\v1.1
等。 然后,您可以創建一個鏈接服務器,您可以查詢:
select * from linkedserver.northwind.dbo.YourTable
現在,您可以將linkedserver更改為指向localhost\\v1.0
, localhost\\v1.1
,然后存儲過程將跟隨。
我會看到這個問題,看看是否彈出更好的建議:)
您可以在每個數據庫中為所需的其他表創建視圖。 存儲過程將引用視圖,視圖將指向“正確”的數據庫。
您甚至可以創建一個簡單的TSQL存儲過程來在需要切換到新數據庫時生成視圖。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.