MS SQL Server 2005将数据从一个表复制到另一个表

问题描述:

嘿,我想了解如何将数据从一个表复制到另一个数据库表。我有两个连接到两个不同的数据库。一个叫comp-DEV1和另一个SQLTEST。我目前无法将数据从我的sorce表(SQLTEST)复制到我的目标表(comp-DEV1)。MS SQL Server 2005将数据从一个表复制到另一个表

这是错误:

Msg 102, Level 15, State 1, Line 2 Incorrect syntax near '-'.

查询:

INSERT INTO comp-DEV1.EMSSQL.dbo.tblCL 
SELECT * 
FROM SQLTEST.EMSSQL.dbo.tblCL 
WHERE NOT EXISTS(SELECT * 
      FROM comp-DEV1.EMSSQL.dbo.tblCL 
      WHERE (SQLTEST.EMSSQL.dbo.tblCL.CID = comp-DEV1.EMSSQL.dbo.tblCL.CID) 
      ) 

任何帮助将是巨大的:O)

大卫

+0

'comp-DEV1'是'SQLTEST'上的链接服务器吗? – 2010-08-30 16:12:59

+0

不要以为是。我如何去关联它们? – StealthRT 2010-08-30 16:20:41

尝试在括号包裹你的数据库名称,如:

INSERT INTO [comp-DEV1].EMSSQL.dbo.tblCL 
SELECT * 
FROM SQLTEST.EMSSQL.dbo.tblCL 
WHERE NOT EXISTS(SELECT * 
      FROM [comp-DEV1].EMSSQL.dbo.tblCL 
      WHERE (SQLTEST.EMSSQL.dbo.tblCL.CID = 
       [comp-DEV1].EMSSQL.dbo.tblCL.CID) 
      ) 
+0

好吧,这样做,我现在有一个新的错误:消息7202,级别11,状态2,第2行 无法在sys.servers中找到服务器'SQLTEST'。验证是否指定了正确的服务器名称。如有必要,请执行存储过程sp_addlinkedserver以将服务器添加到sys.servers。 – StealthRT 2010-08-30 16:16:10

+0

@StealthRT:您只需要使用四个名称符号来访问链接服务器实例 - 当引用当前实例上的表时,可以省略它:'SELECT * FROM EMSSQL.dbo.tblCL WHERE ...' – 2010-08-30 16:20:22

+0

@OMG小马(哈哈)。你是正确的,但我仍然得到错误,因为即时猜测,数据库没有链接在一起? – StealthRT 2010-08-30 16:36:04

运行下面的语句首先要检查的是你可以阅读从目标服务器的源:

SELECT * FROM [COMP-DEV1] .EMSSQL.dbo.tblCL

把那第一份工作,然后你应该在你的路上...

+0

是的,它会读取这些记录。 – StealthRT 2010-08-30 16:17:14