Megosztás a következőn keresztül:


Indexek és korlátozások letiltása

A következőkre vonatkozik:SQL ServerAzure SQL DatabaseFelügyelt Azure SQL-példánySQL-adatbázis a Microsoft Fabricben

Ez a cikk azt ismerteti, hogyan tilthat le indexet vagy korlátozásokat az SQL Server Management Studióval vagy a Transact-SQL-lel. Az index letiltása megakadályozza a felhasználók hozzáférését az indexhez, valamint fürtözött indexek esetén az alapul szolgáló táblaadatokhoz. Az indexdefiníció a metaadatokban marad, az indexstatisztikák pedig nemclustered indexeken vannak tárolva. Klaszterezett index vagy nem klaszterezett index kikapcsolása esetén egy nézetnél az index adatai fizikailag törlődnek.

Egy táblázat fürtözött indexének letiltása megakadályozza az adatokhoz való hozzáférést. Az adatok továbbra is a táblában maradnak, de nem érhetők el az adatmanipulációs nyelvi (DML-) műveletekhez, amíg az index el nem kerül vagy újra nem épül.

Limitations

Az index nem marad fenn, amíg le van tiltva.

A lekérdezés-optimalizáló nem veszi figyelembe a letiltott indexet a lekérdezés-végrehajtási tervek létrehozásakor. Emellett a letiltott indexre táblamutatóval hivatkozó lekérdezések is sikertelenek.

Nem hozhat létre olyan indexet, amely ugyanazt a nevet használja, mint egy meglévő letiltott index.

A letiltott index törölhető.

Ha letilt egy egyedi indexet, a PRIMARY KEY vagy UNIQUE korlátozás, valamint a többi tábla indexelt oszlopára hivatkozó összes FOREIGN KEY korlátozás is le lesz tiltva. Fürtözött index letiltásakor a mögöttes táblára vonatkozó összes bejövő és kimenő FOREIGN KEY korlátozás is le van tiltva. A kényszernevek egy figyelmeztető üzenetben jelennek meg, amikor az index le van tiltva. Az index újraépítése után az összes korlátozást manuálisan kell engedélyezni a ALTER TABLE CHECK CONSTRAINT utasítás használatával.

A nem fürtözött indexek automatikusan letiltásra kerülnek, ha a társított fürtözött index le van tiltva. Ezek mindaddig nem engedélyezhetők, amíg a tábla vagy nézet fürtözött indexe nincs engedélyezve, vagy a tábla fürtözött indexe el nem kerül. A nem klaszteres indexeket explicit módon engedélyezni kell, kivéve, ha a fürtözött indexet a ALTER INDEX ALL REBUILD utasítással engedélyezték.

A ALTER INDEX ALL REBUILD utasítás újraépíti és engedélyezi a tábla összes letiltott indexét, kivéve a nézetek letiltott indexeit. A nézetek indexeit külön ALTER INDEX ALL REBUILD utasításban kell engedélyezni.

Egy táblán lévő fürtözött index letiltása a táblára hivatkozó nézetek összes fürtözött és nem fürtözött indexének letiltását is eredményezi. Ezeket az indexeket ugyanúgy kell újraépíteni, mint a hivatkozott táblában lévő indexeket.

A letiltott fürtözött index adatsorai csak a fürtözött index elvetéséhez vagy újraépítéséhez érhetők el.

Letiltott nem-fürtözött indexeket online is újraépíthet, ha a tábla nem rendelkezik letiltott fürtözött indexszel. Ha azonban a ALTER INDEX REBUILD vagy CREATE INDEX WITH DROP_EXISTING utasítást használja, a letiltott fürtözött indexet mindig offline kell újraépítenie. További információ az online indexműveletekről: Indexműveletek online végrehajtása.

A CREATE STATISTICS utasítás nem hajtható végre egy letiltott fürtözött indexet tartalmazó táblán.

Az AUTO_CREATE_STATISTICS adatbázis-beállítás új statisztikákat hoz létre egy oszlopon, ha az index le van tiltva, és a következő feltételek teljesülnek:

  • AUTO_CREATE_STATISTICS ONértékre van állítva.
  • Az oszlophoz nincsenek meglévő statisztikák.
  • A lekérdezésoptimalizálás során statisztikákra van szükség.

Ha egy fürtözött index le van tiltva, DBCC CHECKDB nem tud adatokat visszaadni az alapul szolgáló tábláról; ehelyett az utasítás azt jelenti, hogy a fürtözött index le van tiltva. DBCC INDEXDEFRAG nem használható letiltott index töredezettségmentesítésére; az utasítás hibaüzenettel meghiúsul. A letiltott indexek újraépítéséhez DBCC DBREINDEX használható.

Az új klaszteres index létrehozása aktiválja a korábban letiltott nem-klaszteres indexeket. További információ: Indexek és korlátozások engedélyezése.

Ha a tábla halom, az összes nem rendezett index újraépül.

Permissions

A ALTER INDEXvégrehajtásához legalább ALTER engedélyre van szükség a táblán vagy a nézeten.

Az SQL Server Management Studio használata

Index letiltása

  1. Az Object Explorerben válassza a pluszjelet annak az adatbázisnak a kibontásához, amely azt a táblát tartalmazza, amelyen le szeretné tiltani az indexet.

  2. A pluszjel kiválasztásával bontsa ki a Táblák mappát.

  3. Jelölje ki a pluszjelet annak a táblának a kibontásához, amelyen le szeretné tiltani az indexet.

  4. A pluszjel kiválasztásával bontsa ki a Indexek mappát.

  5. Kattintson a jobb gombbal a letiltani kívánt indexre, és válassza a Tiltsa lelehetőséget.

    Note

    Ha a tábla Tervezési módban van megnyitva, a Letiltás vezérlő nem érhető el. A folytatáshoz zárja be a táblázattervezőt, és kezdje újra.

  6. Az Indexek letiltása párbeszédpanelen ellenőrizze, hogy a megfelelő index szerepel-e az letiltandó indexek táblázatban, majd válassza az OKlehetőséget.

A tábla összes indexének letiltása

  1. Az Object Explorerben válassza a pluszjelet annak az adatbázisnak a kibontásához, amely azt a táblát tartalmazza, amelyen le szeretné tiltani az indexeket.

  2. A pluszjel kiválasztásával bontsa ki a Táblák mappát.

  3. Jelölje ki a pluszjelet annak a táblának a kibontásához, amelyen le szeretné tiltani az indexeket.

  4. Kattintson a jobb gombbal az Indexek mappára, és válassza a Mindent letiltlehetőséget.

  5. Az Indexek letiltása párbeszédpanelen ellenőrizze, hogy a megfelelő indexek szerepelnek-e a indexekben a rács letiltásához, és válassza az OKlehetőséget. Ha el szeretne távolítani egy indexet a indexekből rács letiltásához, jelölje ki az indexet, majd nyomja le a Delete billentyűt.

Az alábbi információk az Indexek letiltása párbeszédpanelen érhetők el:

  • Index neve

    Megjeleníti az index nevét. A végrehajtás során ez az oszlop az állapotot jelképező ikont is megjeleníti.

  • Tábla neve

    Megjeleníti annak a táblának vagy nézetnek a nevét, amelyen az index létre lett hozva.

  • Index típusa

    Megjeleníti az index típusát: fürtözött, nem fürtözött, térbeli, vagy XML.

  • Status

    Megjeleníti a letiltási művelet állapotát. A végrehajtás utáni lehetséges értékek a következők:

    • Blank

      A végrehajtás előtt a Állapot üres.

    • Folyamatban lévő

      Az indexek letiltása megkezdődött, de még nem fejeződött be.

    • Success

      A letiltási művelet sikeresen befejeződött.

    • Error

      Hiba történt az index letiltási művelete során, és a művelet nem fejeződött be sikeresen.

    • Stopped

      Az index letiltása nem sikerült, mert a felhasználó leállította a műveletet.

  • Message

    A letiltási művelet során megjelenő hibaüzenetek szövegét adja meg. A végrehajtás során a hibák hivatkozásként jelennek meg. A hivatkozások szövege a hiba törzsét írja le. Az Üzenet oszlop ritkán elég széles a teljes üzenet szövegének olvasásához. A teljes szöveg kétféleképpen szerezhető be:

    • Vigye az egérmutatót az üzenetcellára, hogy a hibaszöveggel megjelenjen egy súgóbuborék.
    • A hivatkozás kiválasztásával megjelenítheti a teljes hibát megjelenítő párbeszédpanelt.

Használd a Transact-SQL-t

A cikkben szereplő kódminták a AdventureWorks2025 vagy AdventureWorksDW2025 mintaadatbázist használják, amelyet a Microsoft SQL Server-minták és közösségi projektek kezdőlapjáról tölthet le.

Index letiltása

  1. Az Object Explorer-ben csatlakozzon az adatbázismotor egy példányához.

  2. A Standard sávon válassza Új lekérdezéslehetőséget.

  3. Másolja és illessze be a következő példát a lekérdezési ablakba, és válassza a Végrehajtáslehetőséget. Ez a minta letiltja a IX_Employee_OrganizationLevel_OrganizationNode indexet a HumanResources.Employee táblában.

    USE AdventureWorks2022;
    GO
    
    ALTER INDEX IX_Employee_OrganizationLevel_OrganizationNode
        ON HumanResources.Employee
    DISABLE;
    

A tábla összes indexének letiltása

  1. Az Object Explorer-ben csatlakozzon az adatbázismotor egy példányához.

  2. A Standard sávon válassza Új lekérdezéslehetőséget.

  3. Másolja és illessze be a következő példát a lekérdezési ablakba, és válassza a Végrehajtáslehetőséget. Ez a minta letiltja a HumanResources.Employee tábla összes indexét.

    USE AdventureWorks2022;
    GO
    
    ALTER INDEX ALL ON HumanResources.Employee
    DISABLE;