查询以将表数据从本地数据库复制到链接服务器数据库

时间:2020-06-17 09:01:03

标签: sql-server sql-server-2016 linked-server

我试图将表的所有行从本地计算机的数据库复制到链接的服务器数据库。

这是我正在使用的查询:

DECLARE @Qry nvarchar(MAX)
DECLARE @Server nvarchar(50)
SET @Server = '[LINKEDSERVER]'
SET @Qry = '
      DECLARE @Qry2 nvarchar(max)
      SET @Qry2 = N''
      SET IDENTITY_INSERT RDB.dbo.Type ON
      insert into RDB.dbo.Type (id, Name) Select ID,Name From 
      [LOCALSERVER].localdb.dbo.Type
      SET IDENTITY_INSERT RDB.dbo.Type OFF''
      EXEC ' + @Server + '.RDB.dbo.sp_executesql @Qry2'
EXEC SP_EXECUTESQL @Qry

但是我收到此错误-请帮助此处执行以下操作以使其起作用:

在sys.servers中找不到服务器“ LOCALSERVER”。验证是否指定了正确的服务器名称。如有必要,执行存储过程sp_addlinkedserver将服务器添加到sys.servers。

如果删除[LOCALSERVER],我会得到:

无效的对象名称“ localdb”。

如果其他动态查询可以将表数据从本地服务器复制到链接服务器,请提供帮助。

1 个答案:

答案 0 :(得分:1)

您正在尝试在远程链接服务器中运行sql语句。在该远程链接服务器中,没有为您的本地服务器定义链接服务器(sys.servers中的条目)。因此,您将收到错误。

您可以在远程计算机中为服务器定义链接的服务器并执行语句。

DECLARE @Qry nvarchar(MAX)
DECLARE @Server nvarchar(50)
SET @Server = '[LINKEDSERVER]'
SET @Qry = '
      DECLARE @Qry2 nvarchar(max)
      SET @Qry2 = N''
      SET IDENTITY_INSERT RDB.dbo.Type ON
      insert into RDB.dbo.Type (id, Name) Select ID,Name From 
      [LOCALSERVER].localdb.dbo.Type
      SET IDENTITY_INSERT RDB.dbo.Type OFF''
      EXEC ' + @Server + '.RDB.dbo.sp_executesql @Qry2'
EXEC SP_EXECUTESQL @Qry