匹配2个不同服务器上的2个表的列

时间:2018-02-28 23:36:04

标签: sql sql-server

我在自己的服务器上有2个数据库。 我想比较位于每个数据库的表中的 FIRSTNAME LASTNAME 列。

如果第一个数据库的firstname和lastname组合与第二个数据库中的firstname和lastname列匹配,我想显示该名称。

我只想知道两个数据库服务器中列出了哪个名称。

我尝试了以下但我仍然收到错误:

Could not find server 'sql01' in sys.servers. Verify that the correct server name was specified. If necessary, execute the stored procedure sp_addlinkedserver to add the server to sys.servers.

我的SQL查询:

EXEC sp_addlinkedserver @server='sql01'

SELECT LASTNAME, FIRSTNAME, STATUS, CLASS
  FROM sql01.database1.dbo.MyTable1 T1
  WHERE EXISTS (SELECT FIRSTNAME, LASTNAME 
                FROM app02.database2.dbo.MyTable2 T2
                WHERE T1.FIRSTNAME = T2.FIRSTNAME
                AND T1.LASTNAME = T2.LASTNAME)

我的环境:

  • sql01 是我的第一台服务器
  • app02 是我的第二个

我在连接到app02的同时在SQL Server中运行查询。

有什么建议吗?

2 个答案:

答案 0 :(得分:1)

使用sp_addlinkedserver(sql01\SQLEXPRESS包含实例名称,或类似的东西,具体取决于SQL Server的版本)

此外,您还需要运行另一个存储过程来提供链接服务器的登录详细信息

EXEC sp_addlinkedsrvlogin 'Servername', 'false', NULL, 'username', 'password'

答案 1 :(得分:0)

您需要添加服务器和服务器登录:

EXEC sp_addlinkedserver @server='sql01'

EXEC sp_addlinkedsrvlogin 'sql01', 'false', NULL, 'username', 'password'