5

我需要在具有不同数据库名称但相同表和数据的 2 个不同服务器中执行脚本。为此,我尝试使用以下语句。

if (@@servername= 'srvrA')
    begin 
        use dbA
    end
else    
begin 
        use dbB
    end

但是对于 srvrB,它说数据库 dbA 不存在。

有人可以帮我实现这一目标吗?

4

2 回答 2

2

另一种选择

就像是:

sp_addlinkedserver  
  @server= N'srvrA',
  @srvproduct= N'',
  @provider= N'SQLNCLI',
  @datasrc= N'srvrA';

sp_addlinkedsrvlogin
  @rmtsrvname = 'srvrA' ,
  @useself = 'FALSE' ,
  @locallogin = 'your_local_login' ,
  @rmtuser = 'your_remote_login' ,
  @rmtpassword = 'your_password'

然后你的脚本看起来像

DECLARE @@srvname nvarchar(10) = 'srvrA'

IF (@@servername = @@srvname)
  BEGIN
    SELECT *
    FROM srvrA.dbA.your_schema.your_table
  END    
ELSE    
  BEGIN
    SELECT *
    FROM srvrB.dbB.your_schema.your_table
  END    
于 2012-12-25T23:25:53.850 回答
-1

如果启用 SQLCMD 模式,则可以实现目标。从 sql management studio 的 Query 菜单切换 SQLCMD 模式。然后以下脚本将起作用。

if (@@servername = 'srvrA')
    begin
        :setvar dbname dbA
        use $(dbname)
    end
else    
    begin
        :setvar dbname dbB
        use $(dbname)
    end
于 2012-12-21T06:54:51.247 回答