테이블을 동기화 상태로 유지합니다. DW 소스에서동기화 문제가 있습니다. 특정 열이 업데이트되지 않습니다.
, 내가 할 :
SELECT @UpdateDate = MAX(UpdateDate)
FROM [ReplicatedVS3].[dbo].[Payment]
SELECT * INTO #temp
FROM [LinkedServer].[SF].[dbo].[Payment]
WHERE UpdateDate >= @UpdateDate
DELETE FROM [ReplicatedVS3].[dbo].[Payment]
FROM [ReplicatedVS3].[dbo].[Payment] AS A
INNER JOIN #temp AS t
ON A.Payment_id = t.Payment_id
INSERT INTO [ReplicatedVS3].[dbo].[Payment] SELECT * FROM #temp
우수함! 나는 그 어떤 문제도 가지지 않았다.
그럼 난 동일한 SQL 인스턴스 내에서이 시간 할 또 다른 전송 : 나는 문제를 발견
SELECT @LastUpdateDate = MAX(UpdateDate)
FROM [BS].[dbo].[Salesforce_Payment]
insert @PaymentsVS3
select (columns…)
from [ReplicatedVS3].[dbo].[Payment]
where UpdateDate >= @LastUpdateDate
merge [BS].[dbo].[Salesforce_Payment] as TARGET
using (
select (columns…)
from @PaymentsVS3
)
as SOURCE
on (TARGET.Payment_id = SOURCE.Payment_id)
을; 개수는 항상 완벽하지만 ... ReplicatedVS3에서 일부 열은 예를 들어 업데이트되지 않습니다. status = 'completed'를 보았고 BS에서 다른 것을 봅니다 ... 그래서 병합 코드에 문제가 있음을 의미합니다 ... 그러나 내가 수동으로 실행할 때 내가 할 :
insert @PaymentsVS3
select (columns…)
from [ReplicatedVS3].[dbo].[Payment]
where UpdateDate >= @LastUpdateDate
:
insert @PaymentsVS3
select (columns…)
from [ReplicatedVS3].[dbo].[Payment]
where id = xxxx
가 제대로 업데이트됩니다, 그래서 병합이 완벽하게 작동하고 ... 유일하게 가능한 이유는 지금은이 비트에 기록을 잡기 있지 않다이다
어떻게이 문제를 해결할 수 있고, 내가 열이 업데이트되지 않는 볼 이유를 정확히 알고있다.