Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica a:SQL Server
database SQL di Azure
Istanza gestita di SQL di Azure
database SQL in Microsoft Fabric
Questo articolo descrive come abilitare un indice disabilitato in SQL Server usando SQL Server Management Studio o Transact-SQL. Dopo che un indice è disabilitato, rimane disabilitato fino a quando non viene ricostruito o eliminato.
Limitazioni
Dopo la ricompilazione dell'indice, tutti i vincoli disabilitati a causa della disabilitazione dell'indice devono essere abilitati manualmente.
PRIMARY KEY
e i vincoli UNIQUE
sono abilitati ricompilando l'indice associato. Questo indice deve essere ricostruito prima di poter abilitare i vincoli FOREIGN KEY
che fanno riferimento al vincolo PRIMARY KEY
o UNIQUE
.
FOREIGN KEY
I vincoli vengono abilitati tramite l'istruzione ALTER TABLE CHECK CONSTRAINT
.
La ricompilazione di un indice cluster disabilitato non può essere eseguita quando l'opzione ONLINE
è impostata su ON
.
Se l'indice cluster è abilitato o disabilitato e l'indice non cluster è disabilitato, l'operazione sull'indice cluster ha l'effetto seguente sull'indice non cluster disabilitato.
Azione dell'indice clusterizzato | Stato disabilitato dell'indice non clusterizzato |
---|---|
ALTER INDEX REBUILD |
Rimane disabilitato |
ALTER INDEX ALL REBUILD |
Ricostruito e abilitato |
DROP INDEX |
Ricostruito e abilitato |
CREATE INDEX WITH DROP_EXISTING |
Rimane disabilitato |
La creazione di un nuovo indice cluster ha lo stesso comportamento di ALTER INDEX ALL REBUILD
.
Le operazioni consentite su indici non cluster associati a un indice cluster dipendono dallo stato, disabilitato o abilitato, di entrambi i tipi di indice. Nella tabella seguente sono riepilogate le operazioni consentite sugli indici non cluster.
Indice non clusterizzato | Quando gli indici cluster e non-cluster sono disabilitati | Quando l'indice cluster è abilitato e l'indice non cluster è in entrambi gli stati |
---|---|---|
ALTER INDEX REBUILD |
L'azione ha esito negativo | L'azione ha esito positivo |
DROP INDEX |
L'azione ha esito positivo | L'azione ha esito positivo |
CREATE INDEX WITH DROP_EXISTING |
L'azione ha esito negativo | L'azione ha esito positivo |
Quando si ricompilano indici compressi non cluster disabilitati, data_compression
per impostazione predefinita viene impostato su none
, ovvero gli indici non sono compressi. A causa delle impostazioni di compressione, i metadati delle impostazioni vengono persi quando gli indici non clusterizzati sono disabilitati. Per risolvere questo problema, è necessario specificare la compressione esplicita dei dati nell'istruzione rebuild.
Autorizzazioni
È richiesta l'autorizzazione ALTER
per la tabella o la vista. Se si usa DBCC DBREINDEX
, è necessario essere proprietari della tabella o appartenere al ruolo predefinito del server sysadmin oppure essere membro di uno dei ruoli predefiniti del database db_ddladmin o db_owner.
Uso di SQL Server Management Studio
Abilitare un indice disabilitato
In Esplora oggetti selezionare il segno più per espandere il database contenente la tabella in cui si desidera abilitare un indice.
Fare clic sul segno più per espandere la cartella Tabelle.
Selezionare il segno più per espandere la tabella in cui si vuole abilitare un indice.
Fare clic sul segno di addizione per espandere la cartella Indici.
Fare clic con il pulsante destro del mouse sull'indice che si vuole abilitare e selezionare Ricompila.
Nella finestra di dialogo Ricompila indici verificare che nella griglia Indici da ricompilare sia presente l'indice corretto e fare clic su OK.
Abilitare tutti gli indici in una tabella
In Esplora oggetti selezionare il segno più per espandere il database contenente la tabella in cui si desidera abilitare gli indici.
Fare clic sul segno più per espandere la cartella Tabelle.
Selezionare il segno più per espandere la tabella in cui si desidera abilitare gli indici.
Fare clic con il pulsante destro del mouse sulla cartella Indici e selezionare Ricompila tutto.
Nella finestra di dialogo Ricompila indici verificare che gli indici corretti si trovino nella griglia Indici da ricompilare e selezionare OK. Per rimuovere un indice dalla griglia Indici da ricompilare , selezionare l'indice desiderato, quindi premere il tasto CANC.
Le informazioni seguenti sono disponibili nella finestra di dialogo Ricompila indici :
Usare Transact-SQL
Gli esempi di codice in questo articolo usano il database di esempio AdventureWorks2022
o AdventureWorksDW2022
, che è possibile scaricare dalla home page Microsoft SQL Server Samples and Community Projects.
Abilitare un indice disabilitato tramite ALTER INDEX
Eseguire il seguente script Transact-SQL. In questo esempio viene abilitato l'indice IX_Employee_OrganizationLevel_OrganizationNode
nella HumanResources.Employee
tabella.
USE AdventureWorks2022;
GO
ALTER INDEX IX_Employee_OrganizationLevel_OrganizationNode
ON HumanResources.Employee REBUILD;
GO
Abilitare un indice disabilitato tramite CREATE INDEX
Eseguire il seguente script Transact-SQL. In questo esempio viene ricreato l'indice IX_Employee_OrganizationLevel_OrganizationNode
nella HumanResources.Employee
tabella, usando le OrganizationLevel
colonne e OrganizationNode
, quindi viene eliminato l'indice esistente IX_Employee_OrganizationLevel_OrganizationNode
.
USE AdventureWorks2022;
GO
CREATE INDEX IX_Employee_OrganizationLevel_OrganizationNode
ON HumanResources.Employee(OrganizationLevel, OrganizationNode) WITH (DROP_EXISTING = ON);
GO
Abilitare un indice disabilitato tramite DBCC DBREINDEX
Annotazioni
Questa funzionalità verrà rimossa in una versione futura di SQL Server. Evitare di usare questa funzionalità in un nuovo progetto di sviluppo e prevedere interventi di modifica nelle applicazioni in cui è attualmente implementata.
Eseguire il seguente script Transact-SQL. In questo esempio viene abilitato l'indice IX_Employee_OrganizationLevel_OrganizationNode
nella HumanResources.Employee
tabella.
USE AdventureWorks2022;
GO
DBCC DBREINDEX ("HumanResources.Employee", IX_Employee_OrganizationLevel_OrganizationNode);
GO
Abilitare tutti gli indici in una tabella usando ALTER INDEX
Eseguire il seguente script Transact-SQL. In questo esempio vengono attivati tutti gli indici della HumanResources.Employee
tabella.
USE AdventureWorks2022;
GO
ALTER INDEX ALL
ON HumanResources.Employee REBUILD;
GO
Abilitare tutti gli indici in una tabella usando DBCC DBREINDEX
Annotazioni
Questa funzionalità verrà rimossa in una versione futura di SQL Server. Evitare di usare questa funzionalità in un nuovo progetto di sviluppo e prevedere interventi di modifica nelle applicazioni in cui è attualmente implementata.
Eseguire lo script seguente Transact-SQL. In questo esempio vengono attivati tutti gli indici della HumanResources.Employee
tabella.
USE AdventureWorks2022;
GO
DBCC DBREINDEX ("HumanResources.Employee", " ");
GO