使用 Microsoft 登入
登入或建立帳戶。
您好:
選取其他帳戶。
您有多個帳戶
選擇您要用來登入的帳戶。

徵兆

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

例如,假設群組或唯一索引中包含名為 「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 用來描述軟體更新的 術語

需要更多協助嗎?

想要其他選項嗎?

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

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

這項資訊有幫助嗎?

您對語言品質的滿意度如何?
以下何者是您會在意的事項?
按下 [提交] 後,您的意見反應將用來改善 Microsoft 產品與服務。 您的 IT 管理員將能夠收集這些資料。 隱私權聲明。

感謝您的意見反應!

×