【问题标题】:SQL Server Merge from local to linked server errorSQL Server 从本地合并到链接服务器错误
【发布时间】: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


【解决方案1】:

根据T-SQL Merge statement Syntax,目标表不能是远程表名。因此,您可能需要将本地表发送到远程服务器,并在远程服务器上执行一个已创建的过程来合并这两个表,即远程主机和复制的临时表。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多