SQL Server數(shù)據(jù)同步Merge的一個(gè)BUG及解決方法
作者:青春的虎子
本文我們介紹了SQL Server數(shù)據(jù)同步Merge的一個(gè)小漏洞以及解決的方案,希望能夠?qū)δ兴鶐椭?/div>
本文我們主要介紹了SQL Server數(shù)據(jù)同步Merge的一個(gè)小漏洞以及解決的方案,通過(guò)以下的代碼讓我們來(lái)一起了解一下這一漏洞是怎么造成的以及它的解決方法吧。
假設(shè)有兩個(gè)數(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 ....
當(dāng)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的知識(shí)就介紹到這里,希望能夠帶給您一些收獲吧!
【編輯推薦】
責(zé)任編輯:趙鵬
來(lái)源:
博客園


相關(guān)推薦




