SQL 服务器:从链接服务器插入数据

SQL Server : Insert data from Linked Server

我有两个 SQL 服务器:Server1Server2。服务器已链接,链接两个服务器的用户是db_owner。

当我在Server1写下:

  INSERT INTO Server2.dbname.dbo.ContractPermission (ContractNo, UsrCode, Extra)
  VALUES  ('29977', 'xxx', 1)

它很有魅力!

但是当我在 Server1 写下这个:

INSERT INTO Server2.dbname.dbo.ContractPermission
   SELECT 
       [ContractNo]
       ,'xxx'
       ,[Extra]
   FROM 
       Server2.dbname.dbo.ContractPermission
   WHERE 
       UsrCode = 'yyy'

它不起作用。返回的错误码为:

Msg 213, Level 16, State 1, Line 1
Column name or number of supplied values does not match table definition.

有趣的是,如果我连接到 Server2 并使用完全相同的代码,它就能正常工作!

所以我的困惑是:当我已经证明我可以从 Server1 向 table 中插入元素时,为什么这对 Server1 不起作用。而且我还证明 SQL 在我使用 Server2 时有效。

SQL 服务器版本略有不同:

这不是什么大问题,因为我总是可以从 Server2 执行它。我很好奇为什么它在 Server1.

中不起作用

您缺少第一个示例中的列。

试试这个:

INSERT INTO Server2.dbname.dbo.ContractPermission
  (ContractNo, UsrCode, Extra )
SELECT 
  [ContractNo]
  ,'xxx'
  ,[Extra]
FROM Server2.dbname.dbo.ContractPermission
WHERE UsrCode = 'yyy'