2017-10-06 271 views
0

我想從我的本地數據庫遠程數據庫插入和更新記錄合併合併,但我發現SQL服務器從地方到鏈接的服務器錯誤

無效的對象名稱[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] 
+0

請勿使用合併。改用UPDATE/INSERT語句。你應該避免使用合併。合併報表很難調試+它有很多未解決的錯誤。對於單獨的UPDATE/INSERT語句,它通常也沒有任何性能優勢 –

回答

0

根據T-SQL Merge語句的語法,目標表不能是遠程表名稱。因此,可能需要將本地表發送到遠程服務器,並在遠程服務器上執行已合併兩個表(即遠程主服務器和複製臨時服務器)的已創建過程。