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

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

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

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

最佳答案

还有一个选择

  • 添加链接的服务器sp_addlinkedserver
  • 登录本地实例和远程服务器之间的映射sp_addlinkedsrvlogin

  • 就像是:
    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
    

    关于sql - 与条件语句一起使用数据库,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13984607/

    10-13 09:28