【发布时间】:2017-10-06 06:59:01
【问题描述】:
我正在尝试使用插入和更新将本地数据库中的记录合并到远程数据库,但我得到了
无效的对象名称 [localdatabase].dbo.MASTER_CORPORATECOMPANY*** 错误。
我已经分享了下面的代码。谁能告诉我怎样才能达到同样的效果?
EXEC('MERGE INTO [linkserver].[remotedatabase].dbo.MASTER_CORPORATECOMPANY AS D
USING [localdatabase].dbo.MASTER_CORPORATECOMPANY AS S
ON D.IDENTIFICATIONNUMBER = S.IDENTIFICATIONNUMBER
WHEN MATCHED THEN
UPDATE SET
D.DATEOFINCORPORATION = S.DATEOFINCORPORATION,
D.COMPANYNAME = S.COMPANYNAME,
D.COMPANYSTATUS = S.COMPANYSTATUS,
D.REGISTEREDSTATE = S.REGISTEREDSTATE,
D.REGISTEREDOFFICE = S.REGISTEREDOFFICE,
D.CREATEDDATE = S.CREATEDDATE
WHEN NOT MATCHED THEN
INSERT (DATEOFINCORPORATION, COMPANYNAME, COMPANYSTATUS,REGISTEREDSTATE,REGISTEREDOFFICE,CREATEDDATE)
VALUES (S.DATEOFINCORPORATION, S.COMPANYNAME,S.COMPANYSTATUS,S.REGISTEREDSTATE,S.REGISTEREDOFFICE, S.CREATEDDATE);') AT [linkserver]
【问题讨论】:
-
不要使用合并。请改用 UPDATE/INSERT 语句。您应该完全避免使用合并。合并语句很难调试 + 它有很多未解决的错误。而且它通常对单独的 UPDATE/INSERT 语句没有任何性能优势
标签: sql-server linked-server sql-merge