KB3030352 - 修复:为Microsoft SQL Server数据库启用更改数据捕获后,更改表对更新行的排序不正确

应用对象
SQL Server 2008 Enterprise SQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use) SQL Server 2012 Developer SQL Server 2012 Enterprise SQL Server 2012 Enterprise Core SQL Server 2012 Standard SQL Server 2016 Developer - duplicate (do not use) SQL Server 2016 Enterprise - duplicate (do not use) SQL Server 2016 Enterprise Core - duplicate (do not use) SQL Server 2016 Standard - duplicate (do not use) SQL Server 2016 Service Pack 1

Microsoft Microsoft SQL Server 2012、2014 或 2016 修补程序作为一个可下载文件分发。 由于修补程序是累积的,因此每个新版本都包含上一个SQL Server 2012、2014、2016 修补程序版本中包含的所有修补程序和所有安全修补程序。

症状

为 Microsoft SQL Server 2012、2014 或 2016 数据库启用更改数据捕获后,更改表中的 __$operation 列可能针对更新的行排序不正确。 更新行时,更改表中有两行,其中用于 __$operation 的 delete 和 insert。 但插入操作可能会在删除操作之前意外出现。 如果应用程序将行重新应用到具有主键约束的另一个表,则可能会出现以下主键冲突:

注意

消息 2627,级别 14,状态 1,第 6 行主要密钥约束“Primary_Key_name”。 无法在对象“table_name”中插入重复键。 重复键值 () 。

      

解决方法

此问题在以下SQL Server累积更新中已修复。

建议:安装SQL Server的最新累积更新

SQL Server的每个新累积更新都包含以前的累积更新中包含的所有修补程序和所有安全修补程序。 查看SQL Server的最新累积更新:

状态

Microsoft 已确认在 "适用于" 部分中所列的 Microsoft 产品中存在问题。

参考资料

了解 Microsoft 用于描述软件更新的术语