Indexek letiltása

Az indexek letiltása megakadályozza, hogy a felhasználó hozzáférjen az indexekhez, amikor fürtözött indexeket használnak az alatta lévő táblázatban szereplő adatokhoz. Az indexdefiníció metaadatokban marad, az indexstatisztikák pedig nem klaszteres indexeken tárolódnak. A nem clusterelt indexek vagy fürtözött indexek tiltása a nézetben fizikailag eltávolítja az indexadatokat. A fürtözött táblázat index letiltása megakadályozza az adatokhoz való hozzáférést; az adatok a táblázatban maradnak, de nem állnak rendelkezésre a DML műveletekhez, amíg az indexet törlik vagy átépítik. A letiltott index újraépítéséhez és engedélyezéséhez használja az ALTER INDEX REBUILD utasítást vagy a CREATE INDEX WITH DROP_EXISTING utasítást.

Egy vagy több index letiltható a következő esetekben:

Az SQL Server Database Engine automatikusan letiltja az indexet az SQL Server alkalmazás frissítése során.

Az index manuálisan van letiltva az ALTER INDEX utasítással.

A frissítés során egy új verzió, vagy a frissítés során a frissítési csomag SQL Server, a Database Engine automatikusan felismeri és letiltja az index, beleértve a teljesítmény-index, ha az index vagy nézet meghatározása tartalmazza az alábbi:

Olyan kifejezés, amelyhez az Adatbázis-motor nem tudja garantálni az indexadatok integritását.

Tegyük fel például, hogy az index egy rendszerműködést használ, és a frissítés során a funkciót megváltoztatták, így most más eredményt ad vissza. Az adatbázismotor letiltja az indexet a frissítési folyamat során, mert az index olyan adatokat tartalmazhat, amelyek a frissítés után nem lesznek érvényesek.

A frissítési folyamat közben megváltoztatható válogatási lehetőségek olyanok, hogy az index már nem rendeződik megfelelően.

Ha az index le van tiltva a frissítés során, egy üzenet jelenik meg, amely tartalmazza az index nevét és az összes kapcsolódó korlátozás nevét, így a frissítés befejezése után újraépítheti őket. Az index újraépítése és az összes korlátozás megadása korrigálja a frissítés során érvénytelenné vált adatokat.

Az CHECK korlátozás le lehet tiltani, ha a definíció olyan kifejezést tartalmaz, amelyhez az Adatbázis-motor már nem garantálja az adatok sértetlenségét. A korlátozást az ALTER TABLE CHECK utasítás segítségével engedélyezheti.

Az ALTER INDEX DISABLE utasítással bármikor manuálisan kikapcsolhatja az indexet.

Az index manuális letiltása hasznos lehet a következő esetekben:

A lemez I / O hibáinak (823 vagy 824-es hibák) rögzítése az indexoldalon, majd az index újbóli létrehozása.

Az index ideiglenes eltávolítása a hibaelhárításhoz.

Nem fürtözött indexek újraképítése.

Ha a nem klaszterezett index engedélyezve van, akkor az újjépítési művelet ideiglenes lemezterületet igényel, amely elegendő az új és a régi index tárolásához. Ha a nem klaszteres indexeket letiltja és újraépíti egy külön tranzakcióban, az indexek letiltásakor felszabadított lemezterület későbbi újraépítéshez vagy bármely más művelethez használható. Nincs szükség további lemezterületre, kivéve az ideiglenes lemezterületet a rendezéshez; Ez általában az index méretének 20 százaléka.

Ha a lemezterület korlátozott, hasznos lehet a nem fürtözött index letiltása az újraépítés előtt. Például létezik egy tárolt eljárás, amely újraegyesíti az összes nem klaszteres indexet egy vagy több táblában. Ha ezeket az indexeket az újjáépítési műveletektől eltérő külön tranzakcióban tiltja, az újjáépítés előtt jelentősen csökkenti az átépítéshez szükséges ideiglenes lemezterületet.

Kapcsolódó cikkek