SQL Server數(shù)據(jù)同步Merge的一個BUG及解決方法
作者:青春的虎子 
  本文我們介紹了SQL Server數(shù)據(jù)同步Merge的一個小漏洞以及解決的方案,希望能夠?qū)δ兴鶐椭?/div>  
 
                         
  本文我們主要介紹了SQL Server數(shù)據(jù)同步Merge的一個小漏洞以及解決的方案,通過以下的代碼讓我們來一起了解一下這一漏洞是怎么造成的以及它的解決方法吧。
假設(shè)有兩個數(shù)據(jù)a.Name NVarchar(40)和b.Name Varchar(40),代碼如下:
- MERGE a AS TARGET
 - USING (
 - SELECT
 - id,name
 - FROM b
 - ) AS SOURCE ON (TARGET.[id] = SOURCE.[id])
 - WHEN MATCHED AND CHECKSUM(TARGET.Name)!= CHECKSUM(CONVERT(NVARCHAR(40),SOURCE.[Name])) THEN
 - UPDATE SET TARGET.[Name] = SOURCE.[Name],
 - WHEN NOT MATCHED BY TARGET THEN
 - INSERT (
 - [id]
 - ,[Name]
 - ) VALUES(
 - SOURCE.[ID]
 - ,SOURCE.[Name]
 - )
 - WHEN NOT MATCHED BY SOURCE THEN
 - Delete ....
 
當b.name 以“-” 結(jié)束,如 “test-” 這種情況,merge不起作用。其他情況都還好。
需要把
- CHECKSUM(TARGET.Name)!= CHECKSUM(CONVERT(NVARCHAR(40),SOURCE.[Name]))
 
變成
- CHECKSUM(CONVERT(NVARCHAR(40),TARGET.Name))!= CHECKSUM(SOURCE.[Name])
 
后才可以同步。
關(guān)于SQL Server數(shù)據(jù)同步Merge的知識就介紹到這里,希望能夠帶給您一些收獲吧!
【編輯推薦】
責任編輯:趙鵬 
                    來源:
                    博客園
  
 
相關(guān)推薦
 2011-07-22 13:46:41
 
 
 














 
 

 