Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik:SQL Server
Azure SQL Database
Felügyelt Azure SQL-példány
SQL-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_STATISTICSONé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
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.
A pluszjel kiválasztásával bontsa ki a Táblák mappát.
Jelölje ki a pluszjelet annak a táblának a kibontásához, amelyen le szeretné tiltani az indexet.
A pluszjel kiválasztásával bontsa ki a Indexek mappát.
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.
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
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.
A pluszjel kiválasztásával bontsa ki a Táblák mappát.
Jelölje ki a pluszjelet annak a táblának a kibontásához, amelyen le szeretné tiltani az indexeket.
Kattintson a jobb gombbal az Indexek mappára, és válassza a Mindent letiltlehetőséget.
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
Az Object Explorer-ben csatlakozzon az adatbázismotor egy példányához.
A Standard sávon válassza Új lekérdezéslehetőséget.
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_OrganizationNodeindexet aHumanResources.Employeetáblában.USE AdventureWorks2022; GO ALTER INDEX IX_Employee_OrganizationLevel_OrganizationNode ON HumanResources.Employee DISABLE;
A tábla összes indexének letiltása
Az Object Explorer-ben csatlakozzon az adatbázismotor egy példányához.
A Standard sávon válassza Új lekérdezéslehetőséget.
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.Employeetábla összes indexét.USE AdventureWorks2022; GO ALTER INDEX ALL ON HumanResources.Employee DISABLE;