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 hozhat létre, építhet újra vagy vethet be indexeket online az SQL Server Management Studio vagy a Transact-SQL használatával. A ONLINE opció lehetővé teszi, hogy a felhasználók egyidejűleg hozzáférjenek a mögöttes táblához vagy a fürtözött indexek adataihoz, valamint az ezekhez az indexműveletekhez kapcsolódó nem fürtözött indexekhez. Ha például egy felhasználó újraépít egy fürtözött indexet, az adott felhasználó és mások továbbra is frissíthetik és lekérdezhetik az alapul szolgáló adatokat.
Ha offline adatdefiníciós nyelvi (DDL-) műveleteket hajt végre, például fürtözött indexeket készít vagy épít újra, ezek a műveletek kizárólagos (X) zárolásokat tárolnak a mögöttes adatokon és a kapcsolódó indexeken. Ez megakadályozza a mögöttes adatok módosítását és lekérdezését az indexművelet befejezéséig.
Note
A táblából egy nagy objektumoszlop eltávolítása után az index-újraépítési parancsok kizárólagos zárolásokat tarthatnak fenn a fürtözött indexeken, még akkor is, ha azokat online hajtják végre.
A ONLINE lehetőség az alábbi Transact-SQL utasításokban érhető el.
- INDEX KÉSZÍTÉSE
- ALTER INDEX
- DROP INDEX
-
ALTER TABLE (
UNIQUEvagyPRIMARY KEYkorlátozások hozzáadása vagy eltávolítása)
Az indexek online létrehozásával, újraépítésével vagy elvetésével kapcsolatos korlátozásokért lásd online indexelési műveletekre vonatkozó irányelveket.
Az ismételhető indexműveletek használatához online kell elvégezni az indexelési műveletet. További információ: Újra felhasználható index szempontjai.
Támogatott platformok
Az online indexelési műveletek nem érhetők el az SQL Server minden kiadásában. További információkért lásd az SQL Server 2022 kiadásait és támogatott funkcióit.
Az online indexelési műveletek az Azure SQL Database-ben és a felügyelt Azure SQL-példányban érhetők el.
Permissions
A(z) táblára vagy nézetre vonatkozó ALTER engedély szükséges.
Az SQL Server Management Studio használata
Az Object Explorerben bontsa ki azt az adatbázist, amely azt a táblát tartalmazza, amelyen online újra szeretné építeni az indexet.
Nyissa meg a Táblák mappát.
Bontsa ki azt a táblát, amelyen újra szeretné építeni az indexet online.
Nyissa meg a Indexek mappát.
Használja az online újraépíteni kívánt index helyi menüjét, és válassza a Tulajdonságoklehetőséget.
A Lap választásacsoportban válassza a Beállításoklehetőséget.
Válassza az Online DML-feldolgozás engedélyezéselehetőséget, majd válassza True lehetőséget a listából.
Kattintson az OK gombra.
Használja az online újraépíteni kívánt index helyi menüjét, és válassza a Újraépítéslehetőséget.
Az Indexek újraépítése párbeszédpanelen ellenőrizze, hogy a megfelelő index szerepel-e a indexekben a rács újraépítéséhez, és válassza az OKlehetőséget.
Használd a Transact-SQL-t
Az alábbi példa újraépít egy meglévő online indexet a AdventureWorks mintaadatbázisban.
ALTER INDEX AK_Employee_NationalIDNumber
ON HumanResources.Employee
REBUILD WITH (ONLINE = ON);
Az alábbi példa törli a fürtözött indexet online, és az eredményként kapott táblát (halom) a NewGroup záradék használatával áthelyezi a fájlcsoportba MOVE TO. A rendszer lekérdezi a sys.indexes, sys.tablesés sys.filegroups katalógusnézeteket, hogy ellenőrizze az áthelyezés előtti és utáni index- és táblaelhelyezést a fájlcsoportokban.
-- Create a clustered index on the PRIMARY filegroup if the index does not exist.
IF NOT EXISTS (SELECT name FROM sys.indexes WHERE name =
N'AK_BillOfMaterials_ProductAssemblyID_ComponentID_StartDate')
CREATE UNIQUE CLUSTERED INDEX
AK_BillOfMaterials_ProductAssemblyID_ComponentID_StartDate
ON Production.BillOfMaterials (ProductAssemblyID, ComponentID,
StartDate)
ON 'PRIMARY';
GO
-- Verify filegroup location of the clustered index.
SELECT t.name AS [Table Name], i.name AS [Index Name], i.type_desc,
i.data_space_id, f.name AS [Filegroup Name]
FROM sys.indexes AS i
JOIN sys.filegroups AS f ON i.data_space_id = f.data_space_id
JOIN sys.tables as t ON i.object_id = t.object_id
AND i.object_id = OBJECT_ID(N'Production.BillOfMaterials','U')
GO
-- Create filegroup NewGroup if it does not exist.
IF NOT EXISTS (SELECT name FROM sys.filegroups
WHERE name = N'NewGroup')
BEGIN
ALTER DATABASE AdventureWorks2022
ADD FILEGROUP NewGroup;
ALTER DATABASE AdventureWorks2022
ADD FILE (NAME = File1,
FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\File1.ndf')
TO FILEGROUP NewGroup;
END
GO
-- Verify new filegroup
SELECT * from sys.filegroups;
GO
-- Drop the clustered index and move the BillOfMaterials table to
-- the Newgroup filegroup.
-- Set ONLINE = OFF to execute this example on editions other than Enterprise Edition.
DROP INDEX AK_BillOfMaterials_ProductAssemblyID_ComponentID_StartDate
ON Production.BillOfMaterials
WITH (ONLINE = ON, MOVE TO NewGroup);
GO
-- Verify filegroup location of the moved table.
SELECT t.name AS [Table Name], i.name AS [Index Name], i.type_desc,
i.data_space_id, f.name AS [Filegroup Name]
FROM sys.indexes AS i
JOIN sys.filegroups AS f ON i.data_space_id = f.data_space_id
JOIN sys.tables as t ON i.object_id = t.object_id
AND i.object_id = OBJECT_ID(N'Production.BillOfMaterials','U');
További információ: ALTER INDEX (Transact-SQL).