Jelenségek
Tegyük fel, hogy van egy olyan táblája, amely idegenkulcs-megkötési készletet használ a kaszkádolt törléshez, és az idegen kulcsoszlop statisztikája nem fedi le a tábla főbb értékeinek teljes tartományát (például: mivel az adatok eloszlása nem frissült, miután az adateloszlás módosult a táblában). Ebben az esetben, ha olyan sort próbál törölni, amely a statisztikai hisztogramban nem megadott kulcsértéknek megfelelő sort használ, és a Lekérdezésoptimalátor az alapértelmezett számosságbecslést használja, a törlési művelet lassabb a vártnál. Azt is észreveheti, hogy az indexelési művelettel megkeresi az egyező sorokat a hivatkozó táblában.
Állapot
A Microsoft megerősítette, hogy ez a probléma „A következőkre vonatkozik:” részben felsorolt Microsoft-termékekre vonatkozik.
Megoldás
Ezt a hibát az SQL Server alábbi kumulatív frissítésében javítottuk:
Megjegyzés: Ez a javítás csak akkor engedélyezett, ha bekapcsolja az optimalizáló gyorsjavításait (vagy az adatbázis-hatókörű konfigurációs beállításon keresztül, a lekérdezésmutatóval vagy a 4199-es jelölővel).
Az SQL Server összesítve frissülő frissítései:
Az SQL Server minden egyes új kumulatív frissítése tartalmazza az összes gyorsjavítást és minden olyan biztonsági javítást, amely az előző összegző frissítésben szerepelt. Tekintse meg az SQL Server legújabb kumulatív frissítéseit:
Áthidaló megoldás
A következő módszerek valamelyikével áthidalhatja ezt a problémát.
-
Használjon régi számosságbecslést. További információ: Számosságbecslés (SQL Server).
-
Távolítsa el a kaszkádolt törlést az Idegenkulcs-definícióból, és végezze el a törlési műveletet a JOIN használatával a szülő- és gyermektáblák között a kaszkádolt törléssel egyenértékű művelet elvégzéséhez.
-
Adatok törlése előtt frissítse a szülőtáblán a FULLSCAN táblázatot.
Hivatkozások
Ismerje meg a Microsoft által a szoftverfrissítések leírására használt terminológiát.