Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Este tópico descreve como criar, recriar ou remover índices online no SQL Server 2014 usando o SQL Server Management Studio ou o Transact-SQL. A opção ONLINE permite acesso simultâneo do usuário à tabela subjacente ou dados de índice clusterizado e a todos os índices não clusterizados associados durante essas operações de índice. Por exemplo, enquanto um índice clusterizado está sendo recriado por um usuário, esse usuário e outros podem continuar atualizando e consultando os dados subjacentes. Quando você executa operações de DDL (linguagem de definição de dados) offline, como compilar ou recriar um índice clusterizado; essas operações contêm bloqueios exclusivos nos dados subjacentes e índices associados. Isso impede modificações e consultas aos dados subjacentes até que a operação de índice seja concluída.
Observação
As operações de índice online não estão disponíveis em todas as edições do SQL Server. Para obter mais informações, consulte Features Supported by the Editions of SQL Server 2014.
Nesse Tópico
Antes de começar:
Para recompilar um índice online usando:
Antes de começar
Limitações e restrições
Recomendamos executar operações de índice online para ambientes de negócios que operam 24 horas por dia, sete dias por semana, em que a necessidade de atividade simultânea do usuário durante operações de índice é vital.
A opção ONLINE está disponível nas instruções de Transact-SQL a seguir.
ALTER TABLE (para adicionar ou remover restrições de unicidade ou chave primária com a opção de índice agrupado)
Para obter mais limitações e restrições relacionadas à criação, recompilação ou remoção de índices online, consulte Diretrizes para operações de índice online.
Segurança
Permissões
Requer a permissão ALTER na tabela ou exibição.
Como usar o SQL Server Management Studio.
Para recompilar um índice online
No Pesquisador de Objetos, clique no sinal de adição para expandir o banco de dados que contém a tabela na qual você deseja recriar um índice online.
Expanda a pasta Tabelas .
Clique no sinal de mais para expandir a tabela a qual você deseja reconstruir um índice online.
Expanda a pasta Índices .
Clique com o botão direito do mouse no índice que você deseja recompilar online e selecione Propriedades.
Em Selecione uma página, selecione Opções.
Selecione Permitir processamento DML online e selecione True na lista.
Clique em OK.
Clique com o botão direito do mouse no índice que você deseja recompilar online e selecione Recompilar.
Na caixa de diálogo Recompilar Índices, verifique se o índice correto está na grade Índices para reconstruir e clique em OK.
Usando Transact-SQL
Para criar, recompilar ou remover um índice online
No Pesquisador de Objetos, conecte-se a uma instância do Mecanismo de Banco de Dados.
Na barra Padrão, clique em Nova Consulta.
Copie e cole o exemplo a seguir na janela de consulta e clique em Executar. O exemplo recria um online existente
USE AdventureWorks2012; GO ALTER INDEX AK_Employee_NationalIDNumber ON HumanResources.Employee REBUILD WITH (ONLINE = ON); GOO exemplo a seguir exclui um índice clusterizado online e move a tabela resultante (heap) para o grupo
NewGroupde arquivos usando aMOVE TOcláusula. As exibições de catálogosys.indexes,sys.tablesesys.filegroupssão consultadas para verificar o índice e a colocação da tabela nos grupos de arquivos antes e depois da mudança.USE AdventureWorks2012; GO --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 AdventureWorks2012 ADD FILEGROUP NewGroup; ALTER DATABASE AdventureWorks2012 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'); GO
Para mais informações, consulte ALTERAR ÍNDICE (Transact-SQL).