Applies ToSQL 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 2014 Service Pack 2 - duplicate (do not use) SQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Enterprise Core - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use) SQL Server 2017 Developer on Windows SQL Server 2017 Enterprise on Windows SQL Server 2017 Enterprise Core on Windows SQL Server 2017 Standard on Windows

徵兆

當您在具有群組或唯一索引的資料表上執行更新,而更新發生在非主要唯一資料行時,修訂追蹤記錄與更新語句不一致。

例如,假設群組或唯一索引中包含名為 「column1」 的資料行。 當欄值從較大的值變更為較小的值 (例如將值從 20 變更為 16) 時,追蹤修訂提要欄位會在刪除作業之前收到插入作業。 例如,交易記錄插入列記錄作業是在刪除列作業之前收到,或是 「I」 是在 「D」 之前插入。

Sys_change_version

sys_change_create_version

sys_change_operation

sys_change_column

sys_change_coNtext

PK_column

1116

19

5639485628

1116

20

D

5639485628

當欄值從較小的值變更為較大的值 (例如將值從 16 變更為 20) 時,會在 「I」 之前插入 「D」。

Sys_change_version

sys_change_create_version

sys_change_operation

sys_change_column

sys_change_coNtext

PK_column

1126

32

D

5639485628

1126

33

5639485628

原因

發生此問題的原因在於追蹤修訂提要欄位中刪除/插入組之間的順序不正確。

解決方案

這個問題的修正套裝程式含在下列SQL Server更新中:

         SQL Server 2017 的累積更新 8

         SQL Server 2016 Service Pack 1 的累積更新 9

SQL Server 2014 SP2 的累積更新 12

關於SQL Server組建

SQL Server的每個新組建都包含上一個組建中的所有 Hotfix 與安全性修正。 建議您為 SQL Server 安裝最新組建:

SQL Server 2017 的最新累積更新

SQL Server 2016 的最新組建

2014 年 SQL Server 的最新累積更新

狀態

Microsoft 已確認<適用於>一節所列的 Microsoft 產品確實有上述問題。

其他相關資訊

針對已啟用追蹤修訂的資料表,當非主要資料行的更新定義為唯一時,會將兩個專案插入修訂追蹤側邊資料表中:每個分割動作的一個專案,插入和刪除。

CHANGETABLE 函數被叫來列舉變更時,這些專案會依主鍵值排序,然後再匯總作業。 如果更新插入較低的值,會先在提要資料表上執行「I」作業,後面接著「D」運算。 這會導致傳回此資料列的作業不正確。 這是因為 「I」 跟隨 「D」 匯總為 「D」。

由於側邊資料表中只會保留主鍵值,因此不需要有兩個不同的專案。 只要主鍵欄未更新,此情況即為 True。

此問題已針對非主要唯一資料行修正。 在此情況下,當更新發生時,只有一個資料列會以「U」做為更新作業來插入,而非兩個具有「D」和「I」的專案。

參考

瞭解 Microsoft 用來描述軟體更新的 術語

需要更多協助嗎?

想要其他選項嗎?

探索訂閱權益、瀏覽訓練課程、瞭解如何保護您的裝置等等。

社群可協助您詢問並回答問題、提供意見反應,以及聆聽來自具有豐富知識的專家意見。