2010-05-26 129 views
6

我有許多版本相關的數據庫。不同版本的實例可以並排運行,由其不同版本標識,即[NorhwindV1.1]和[NorhwindV1.2]可以與[SouthwindV1.1]和[SouthwindV1.2]一起位於同一臺服務器上。在存儲過程中更改數據庫名稱和跨數據庫查詢

有一些存儲過程可以進行跨數據庫查詢,即存在於NorthwindV1.1上,也存在於SouthwindV1.1中的查詢表中。通過更改版本號來管理數據庫名稱更改的最佳方法是什麼,以便存儲過程查詢正確版本的數據庫?

謝謝,MagicAndi。

回答

5

假設數據庫之間的查詢表是可控的,你可以創建這些表的同義詞,並在過程中使用同義詞的數量。那麼您只需要更改同義詞即可在不同版本之間進行切換。

http://msdn.microsoft.com/en-us/library/ms177544.aspx

+0

喬被接受爲答案。 – MagicAndi 2010-05-26 15:22:29

2

我只知道兩種方式,而且這兩種方法都有點吸引人。首先是使用動態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.0localhost\v1.1等等。然後,您可以創建你喜歡查詢鏈接服務器:

select * from linkedserver.northwind.dbo.YourTable 

現在你可以改變linkedserver在localhost\v1.0localhost\v1.1一個存儲過程將遵循指向。

我會看這個問題,看看是否更好的建議彈出:)

+0

感謝Andomar,我沒有考慮安裝SQL Server的多個實例。 +1。 – MagicAndi 2010-05-26 12:07:57

1

您可以創建所需的其他表的每個數據庫中的觀點。存儲的proc會引用視圖,視圖會指向「正確」的數據庫。

甚至可能創建一個簡單的TSQL存儲過程,以在需要切換到新數據庫時生成視圖。