SQL Server数据同步Merge的一个BUG及解决方法

数据库 SQL Server
本文我们介绍了SQL Server数据同步Merge的一个小漏洞以及解决的方案,希望能够对您有所帮助。

本文我们主要介绍了SQL Server数据同步Merge的一个小漏洞以及解决的方案,通过以下的代码让我们来一起了解一下这一漏洞是怎么造成的以及它的解决方法吧。

假设有两个数据a.Name NVarchar(40)和b.Name Varchar(40),代码如下:

 

  1. MERGE a AS TARGET  
  2.  
  3. USING (  
  4.  
  5. SELECT   
  6.  
  7. id,name  
  8.  
  9. FROM b   
  10.  
  11. ) AS SOURCE ON (TARGET.[id] = SOURCE.[id])  
  12.  
  13. WHEN MATCHED AND CHECKSUM(TARGET.Name)!= CHECKSUM(CONVERT(NVARCHAR(40),SOURCE.[Name])) THEN  
  14.  
  15. UPDATE SET TARGET.[Name] = SOURCE.[Name],  
  16.  
  17. WHEN NOT MATCHED BY TARGET THEN  
  18.  
  19. INSERT (  
  20.  
  21. [id]  
  22.  
  23. ,[Name]   
  24.  
  25. ) VALUES(  
  26.  
  27. SOURCE.[ID]  
  28.  
  29. ,SOURCE.[Name]   
  30.  
  31. )   
  32.  
  33. WHEN NOT MATCHED BY SOURCE THEN  
  34.  
  35. Delete .... 

 

当b.name 以“-” 结束,如 “test-”  这种情况,merge不起作用。其他情况都还好。

需要把

 

  1. CHECKSUM(TARGET.Name)!= CHECKSUM(CONVERT(NVARCHAR(40),SOURCE.[Name])) 

 

变成

 

  1. CHECKSUM(CONVERT(NVARCHAR(40),TARGET.Name))!= CHECKSUM(SOURCE.[Name]) 

 

后才可以同步。

关于SQL Server数据同步Merge的知识就介绍到这里,希望能够带给您一些收获吧!

【编辑推荐】

  1. 如何启用Master Data Services的Web服务
  2. 如何Master Data Service调用API创建Model
  3. SQL Server数据库如何使用存储过程造批量数据
  4. SQL Server数据库如何将当前行和上下行合并查询
  5. 如何将SQL Server 2008的数据复制到MySQL数据库
责任编辑:赵鹏 来源: 博客园
相关推荐

2010-09-08 15:28:50

SQL Server复制

2009-05-04 13:43:16

SQL Server置疑数据库恢复

2010-10-19 10:25:29

SQL Server连

2010-10-20 17:21:07

连接SQL Serve

2010-11-08 16:16:57

SQL Server远

2010-10-19 12:22:02

SQL Server远

2010-11-10 13:42:32

SQL Server删

2010-09-03 11:05:59

SQL删除

2010-10-22 14:35:02

sql server系

2011-07-22 13:46:41

SQL Server MDAC

2010-10-19 11:08:00

SQL Server安

2011-08-09 12:15:08

SQL Server日志已满

2011-07-04 10:09:19

Qt Creator BUG

2011-03-30 16:10:08

SQL Server数内存

2020-10-04 13:29:00

SQL数据库工具

2022-04-06 10:09:17

云服务云计算

2009-08-26 17:53:31

C# DropDown

2011-04-06 11:34:52

SQL Server数查询优化

2011-04-02 13:57:05

Sql Server

2010-10-21 09:43:15

点赞
收藏

51CTO技术栈公众号