2017-10-06 5 views
0

로컬 내가 삽입 및 업데이트 원격 데이터베이스에 내 로컬 데이터베이스에서 레코드를 병합하려고에서 병합하지만SQL Server는 연결된 서버 오류

잘못된 개체 이름 [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 병합 구문에 따르면 대상 테이블은 원격 테이블 이름이 될 수 없습니다. 따라서 로컬 테이블을 원격 서버로 보내고 두 테이블 (원격 마스터 및 복사 된 임시 테이블)을 병합하는 원격 서버에서 이미 생성 된 프로 시저를 실행해야합니다.