簡體   English   中英

在存儲過程中更改數據庫名稱和跨數據庫查詢

[英]Changing Database Names and Cross Database Queries In Stored Procedures

我有許多版本相關的相關數據庫。 不同版本的實例可以並排運行,由不同版本標識,即[NorhwindV1.1]和[NorhwindV1.2]可以與[SouthwindV1.1]和[SouthwindV1.2]一起位於同一服務器上。

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

謝謝,MagicAndi。

假設在數據庫之間查詢的表的數量是可管理的,您可以為這些表創建同義詞並在過程中使用同義詞。 然后,您只需要更改同義詞以在版本之間切換。

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

我只知道兩種方式,兩種方式都很糟糕。 第一種是使用動態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 ,然后存儲過程將跟隨。

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

您可以在每個數據庫中為所需的其他表創建視圖。 存儲過程將引用視圖,視圖將指向“正確”的數據庫。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM