使用带条件语句的数据库

Rag*_*hav 5 sql sql-server-2008

我需要在具有不同数据库名称但具有相同表和数据的2个不同服 为此,我尝试使用以下语句.

if (@@servername= 'srvrA')
    begin 
        use dbA
    end
else    
begin 
        use dbB
    end
Run Code Online (Sandbox Code Playgroud)

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

有人能帮助我实现这个目标吗?

Ale*_*nko 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'
Run Code Online (Sandbox Code Playgroud)

然后你的脚本看起来像

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    
Run Code Online (Sandbox Code Playgroud)