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

问题描述 投票:0回答:1

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

这是我正在使用的查询:

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'。

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

sql-server sql-server-2016 linked-server
1个回答
0
投票

您正在尝试在远程链接服务器中运行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
© www.soinside.com 2019 - 2024. All rights reserved.