[英]How to use variable for server name in SQL Server stored procedure
我有兩個數據庫服務器, server1和server2 ,它們是我們遺留系統的差異環境。 我必須編寫一個存儲過程來獲取與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.