簡體   English   中英

如何在SQL Server存儲過程中使用變量作為服務器名稱

[英]How to use variable for server name in SQL Server stored procedure

我有兩個數據庫服務器, server1server2 ,它們是我們遺留系統的差異環境。 我必須編寫一個存儲過程來獲取與env之一進行通信的數據。

我想要一種方法,以便我可以輕松切換env

喜歡:

Declare @Server nvarchar(20)
set @Server="server1"

select * 
from @Server.global.dbo.tblaccount

參數不能用於標識符 - 列名,表名,模式名,服務器名,函數名等。

您可以使用動態SQL執行此操作:

declare @Server nvarchar(20);
declare @sql nvarchar(max);

set @Server = 'server1';

set @sql = 'select * from [Server].global.dbo.tblaccount';

set @sql = replace(@sql, '[Server]', @Server);

exec sp_executesql @sql;

使用同義詞

create synonym mylocalschema.RemoteTable for server1.database.schema.table;

被引用為:

select top 10 * from mylocalschema.RemoteTable;

取決於env,同義詞將是對正確服務器的引用,並且代碼(sp,views,triggers,等等)對於兩者都是相同的。

唯一重復的項是創建同義詞的腳本:一個用於server1,另一個用於server2(或者可能是用動態sql構建的相同腳本...)。

暫無
暫無

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

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