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 欄位可能會因更新資料列而順序錯誤。 當你更新一列時,變更表中有兩列,分別是 delete(刪除)和 insert(用於 __$ 操作)。 但插入操作可能會意外出現在刪除操作之前。 若應用程式將資料列重新套用到另一有主鍵限制的資料表,可能會發生以下主鍵違規:

注意

訊息 2627,第 14 級,州 1,第 6 行違反 PRIMARY KEY 約束「Primary_Key_name」。 無法在物件「table_name」中插入重複金鑰。 重複的鍵值是 (值) 。

      

解決方式

此問題在以下 SQL Server 的累積更新中得到修正。

建議:安裝最新的 SQL Server 累積更新

每次新的 SQL Server 累積更新都包含了之前累積更新中包含的所有熱修補與安全修補。 請查看 SQL Server 的最新累積更新:

狀態

Microsoft 已確認這是「適用對象」一節中列出的 Microsoft 產品中的問題。

參考資料

了解 Microsoft 用來說明軟體更新的術語