Hatókör
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 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

Jelenségek

Ha fürtözött vagy egyedi indexet tartalmazó táblán futtat frissítést, és a frissítés nem elsődleges egyedi oszlopban történik, a változáskövetési rekord inkonzisztens a frissítési utasítással.

Tegyük fel például, hogy egy "column1" nevű oszlop szerepel a fürtözött vagy egyedi indexben. Ha az oszlop értékét nagyobbról kisebbre módosítja (például 20-ról 16-ra módosítja), a változáskövetési oldaltábla a törlési művelet előtt megkapja a beszúrási műveletet. A tranzakciónapló sorbeszúrási rekordjának művelete például a sortörlési művelet előtt, vagy az "I" beszúrása a "D" elé történik.

Sys_change_version

sys_change_create_version

sys_change_operation

sys_change_column

sys_change_context

PK_column

1116

19

I

NULL

NULL

5639485628

1116

20

D

NULL

NULL

5639485628

Ha az oszlop értéke kisebbről nagyobb értékre változik (például az érték 16-ról 20-ra változik), a "D" szó az "I" elé kerül.

Sys_change_version

sys_change_create_version

sys_change_operation

sys_change_column

sys_change_context

PK_column

1126

32

D

NULL

NULL

5639485628

1126

33

I

NULL

NULL

5639485628

A probléma oka

Ez a probléma a törlési/beszúrási párok közötti helytelen sorrend miatt fordul elő a változáskövetési oldaltáblában.

Megoldás

A probléma megoldását a SQL Server következő frissítései tartalmazzák:

         8. összegző frissítés SQL Server 2017-hez

         9. összegző frissítés a SQL Server 2016 Service Pack 1 csomaghoz

12. összegző frissítés a SQL Server 2014 SP2-höz

A SQL Server buildek ismertetése

A SQL Server minden új buildje tartalmazza az előző buildben található összes gyorsjavítást és biztonsági javítást. Javasoljuk, hogy telepítse az SQL Server legújabb buildét:

A SQL Server 2017 legújabb összegző frissítése

SQL Server 2016 legújabb buildje

A SQL Server 2014 legújabb összegző frissítése

Állapot

A Microsoft megerősítette, hogy ez a probléma „A következőkre vonatkozik:” részben felsorolt Microsoft-termékekre vonatkozik.

További információ

Változáskövetést engedélyező tábla esetén, ha egy nem elsődleges oszlopon történik frissítés, amely egyediként van definiálva, két bejegyzés lesz beszúrva a változáskövetési oldaltáblába: minden felosztási művelethez egy bejegyzést, beszúrást és törlést.

Amikor meghívja a CHANGETABLE függvényt a módosítások számbavételére, a rendszer ezeket a bejegyzéseket elsődleges kulcsértékek szerint rendezi, majd összesíti a műveleteket. Ha a frissítés kisebb értéket szúr be, először az oldaltáblán futtat egy "I" műveletet, majd egy "D" műveletet. Ez helytelen műveletet eredményez ehhez a sorhoz. Ennek az az oka, hogy az "I" és a "D" után a "D" aggregátumként van összesítve.

Mivel az oldaltáblákban csak az elsődleges kulcsértékek maradnak meg, nem szükséges két külön bejegyzést tartalmaznia. Ez mindaddig igaz, amíg az elsődleges kulcs oszlopa nem frissül.

Ez a probléma ki lett javítva a nem elsődleges egyedi oszlopok esetében. Ebben az esetben a frissítéskor csak egy sor lesz beszúrva úgy, hogy az "U" frissítési műveletként van beszúrva két "D" és "I" bejegyzés helyett.

Hivatkozások

Ismerje meg a Microsoft által a szoftverfrissítések leírására használt terminológiát .

További segítségre van szüksége?

További lehetőségeket szeretne?

Fedezze fel az előfizetés előnyeit, böngésszen az oktatóanyagok között, ismerje meg, hogyan teheti biztonságossá eszközét, és így tovább.