Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Baza danych SQL w usłudze Microsoft Fabric
W tym artykule opisano sposób włączania indeksu wyłączonego w programie SQL Server przy użyciu programu SQL Server Management Studio lub Języka Transact-SQL. Po wyłączeniu indeksu pozostaje w stanie wyłączonym, dopóki nie zostanie przebudowany lub usunięty.
Limitations
Po odbudowaniu indeksu wszystkie ograniczenia, które zostały wyłączone z powodu wyłączenia indeksu, muszą być włączone ręcznie.
PRIMARY KEY ograniczenia i UNIQUE są włączone przez ponowne skompilowanie skojarzonego indeksu. Ta indeks musi być przebudowany (włączony) zanim można będzie włączyć ograniczenia FOREIGN KEY, które odwołują się do ograniczenia PRIMARY KEY lub UNIQUE.
FOREIGN KEY Ograniczenia są włączone przy użyciu instrukcji ALTER TABLE CHECK CONSTRAINT .
Nie można ponownie skompilować wyłączonego indeksu klastrowanego, gdy opcja jest ustawiona ONLINE na ON.
Gdy indeks klastrowany jest wyłączony lub włączony, a indeks nieklastrowany jest wyłączony, akcja indeksu klastrowanego zawiera następujące wyniki dla wyłączonego indeksu nieklastrowanego.
| Akcja indeksu klastrowanego | Wyłączony stan indeksu nieklastrowanego |
|---|---|
ALTER INDEX REBUILD |
Pozostaje wyłączona |
ALTER INDEX ALL REBUILD |
Przebudowane i włączone |
DROP INDEX |
Przebudowane i włączone |
CREATE INDEX WITH DROP_EXISTING |
Pozostaje wyłączona |
Utworzenie nowego klastrowanego indeksu działa tak samo jak ALTER INDEX ALL REBUILD.
Dozwolone akcje dla indeksów nieklastrowanych skojarzonych z indeksem klastrowanym zależą od stanu, zarówno wyłączonego, jak i włączonego, obu typów indeksów. Poniższa tabela zawiera podsumowanie dozwolonych akcji dla indeksów nieklastrowanych.
| Akcja indeksu nieklastrowanego | Gdy indeksy klastrowane i nieklastrowane są wyłączone | Gdy indeks klastrowany jest włączony i indeks nieklastrowany jest w obu stanach |
|---|---|---|
ALTER INDEX REBUILD |
Akcja kończy się niepowodzeniem | Akcja zakończy się powodzeniem |
DROP INDEX |
Akcja zakończy się powodzeniem | Akcja zakończy się powodzeniem |
CREATE INDEX WITH DROP_EXISTING |
Akcja kończy się niepowodzeniem | Akcja zakończy się powodzeniem |
Podczas odbudowywania wyłączonych skompresowanych indeksów nieklastrowanych, wartość domyślna data_compression zmienia się na none, co oznacza, że indeksy są nieskompresowane. Jest to spowodowane utratą metadanych ustawień kompresji, gdy indeksy nieklastrowane są wyłączone. Aby obejść ten problem, należy określić jawną kompresję danych w instrukcji rebuild.
Permissions
Wymagane jest uprawnienie ALTER do tabeli lub widoku. W przypadku korzystania z programu DBCC DBREINDEXmusisz być właścicielem tabeli lub być członkiem stałej roli serwera sysadmin albo członkiem db_ddladmin lub db_owner stałych ról bazy danych.
Korzystanie z programu SQL Server Management Studio
Włącz wyłączony indeks
W Eksploratorze obiektów wybierz znak plus, aby rozwinąć bazę danych zawierającą tabelę, na której chcesz włączyć indeks.
Wybierz znak plus, aby rozwinąć folder Tables.
Wybierz znak plus, aby rozwinąć tabelę, w której chcesz włączyć indeks.
Wybierz znak plus, aby rozwinąć folder indeksów.
Kliknij prawym przyciskiem myszy indeks, który chcesz włączyć, i wybierz polecenie Skompiluj ponownie.
W oknie dialogowym Ponowne kompilowanie indeksów sprawdź, czy prawidłowy indeks znajduje się w indeksach , aby ponownie skompilować siatkę i wybierz pozycję OK.
Włączanie wszystkich indeksów w tabeli
W Eksploratorze obiektów wybierz znak plus, aby rozwinąć bazę danych zawierającą tabelę, na której chcesz włączyć indeksy.
Wybierz znak plus, aby rozwinąć folder Tables.
Wybierz znak plus, aby rozwinąć tabelę, w której chcesz włączyć indeksy.
Kliknij prawym przyciskiem myszy folder Indexes i wybierz polecenie Rebuild All.
W oknie dialogowym Ponowne kompilowanie indeksów sprawdź, czy prawidłowe indeksy znajdują się w tabeli Indeksy do ponownego kompilowania, a następnie wybierz OK. Aby usunąć indeks z indeksów w celu odbudowy siatki, wybierz indeks, a następnie naciśnij klawisz Delete.
Następujące informacje są dostępne w oknie dialogowym Ponowne kompilowanie indeksów:
Korzystanie z Transact-SQL
Przykłady kodu w tym artykule korzystają z przykładowej bazy danych AdventureWorks2025 lub AdventureWorksDW2025, którą można pobrać ze strony głównej Przykładów programu Microsoft SQL Server i projektów społeczności.
Włączanie indeksu wyłączonego przy użyciu funkcji ALTER INDEX
Uruchom następujący skrypt Transact-SQL. Ten przykład aktywuje indeks na tabeli.
USE AdventureWorks2022;
GO
ALTER INDEX IX_Employee_OrganizationLevel_OrganizationNode
ON HumanResources.Employee REBUILD;
GO
Włączanie indeksu wyłączonego przy użyciu polecenia CREATE INDEX
Uruchom następujący skrypt Transact-SQL. W tym przykładzie ponownie tworzony jest indeks IX_Employee_OrganizationLevel_OrganizationNode na tabeli HumanResources.Employee, korzystając z kolumn OrganizationLevel i OrganizationNode, a następnie usuwany jest istniejący indeks IX_Employee_OrganizationLevel_OrganizationNode.
USE AdventureWorks2022;
GO
CREATE INDEX IX_Employee_OrganizationLevel_OrganizationNode
ON HumanResources.Employee(OrganizationLevel, OrganizationNode) WITH (DROP_EXISTING = ON);
GO
Włącz wyłączony indeks za pomocą DBCC DBREINDEX
Note
Ta funkcja zostanie usunięta w przyszłej wersji programu SQL Server. Unikaj używania tej funkcji w nowych pracach programistycznych i zaplanuj modyfikowanie aplikacji, które obecnie korzystają z tej funkcji.
Uruchom następujący skrypt Transact-SQL. Ten przykład aktywuje indeks na tabeli.
USE AdventureWorks2022;
GO
DBCC DBREINDEX ("HumanResources.Employee", IX_Employee_OrganizationLevel_OrganizationNode);
GO
Włączanie wszystkich indeksów w tabeli przy użyciu funkcji ALTER INDEX
Uruchom następujący skrypt Transact-SQL. Ten przykład umożliwia włączenie wszystkich indeksów w HumanResources.Employee tabeli.
USE AdventureWorks2022;
GO
ALTER INDEX ALL
ON HumanResources.Employee REBUILD;
GO
Włączanie wszystkich indeksów w tabeli przy użyciu polecenia DBCC DBREINDEX
Note
Ta funkcja zostanie usunięta w przyszłej wersji programu SQL Server. Unikaj używania tej funkcji w nowych pracach programistycznych i zaplanuj modyfikowanie aplikacji, które obecnie korzystają z tej funkcji.
Uruchom następujący skrypt Transact-SQL. Ten przykład umożliwia włączenie wszystkich indeksów w HumanResources.Employee tabeli.
USE AdventureWorks2022;
GO
DBCC DBREINDEX ("HumanResources.Employee", " ");
GO