Partilhar via


GRUPO DE FICHEIROS DE VERIFICAÇÃO DBC (Transact-SQL)

Aplica-se a:SQL ServerBanco de Dados SQL do AzureInstância Gerenciada SQL do Azure

Verifica a alocação e a integridade estrutural de todas as tabelas e exibições indexadas no grupo de arquivos especificado do banco de dados atual.

Transact-SQL convenções de sintaxe

Sintaxe

DBCC CHECKFILEGROUP
[
    [ ( { filegroup_name | filegroup_id | 0 }
        [ , NOINDEX ]
  ) ]
    [ WITH
        {
            [ ALL_ERRORMSGS | NO_INFOMSGS ]
            [ , TABLOCK ]
            [ , ESTIMATEONLY ]
            [ , PHYSICAL_ONLY ]
            [ , MAXDOP  = number_of_processors ]
        }
    ]
]

Argumentos

filegroup_name

O nome do grupo de arquivos no banco de dados atual para o qual verificar a alocação da tabela e a integridade estrutural. Se não for especificado, ou se 0 for especificado, o padrão será o grupo de arquivos primário. Os nomes de grupos de arquivos devem estar em conformidade com as regras para identificadores de .
filegroup_name não pode ser um grupo de arquivos FILESTREAM.

filegroup_id

O número de identificação (ID) do grupo de arquivos no banco de dados atual para o qual verificar a alocação da tabela e a integridade estrutural.

NOÍNDICE

Especifica que verificações intensivas de índices não clusterizados para tabelas de usuário não devem ser executadas. Isso diminui o tempo de execução geral. NOINDEX não afeta as tabelas do sistema porque DBCC CHECKFILEGROUP sempre verifica todos os índices das tabelas do sistema.

ALL_ERRORMSGS

Exibe um número ilimitado de erros por objeto. Todas as mensagens de erro são exibidas por padrão. Especificar ou omitir esta opção não tem efeito.

NO_INFOMSGS

Suprime todas as mensagens informativas.

TABLOCK

Faz com que DBCC CHECKFILEGROUP obtenham bloqueios em vez de usar um instantâneo de banco de dados interno.

APENAS ESTIMATIVA

Exibe a quantidade estimada de espaço de tempdb necessário para executar DBCC CHECKFILEGROUP com todas as outras opções especificadas.

PHYSICAL_ONLY

Limita a verificação à integridade da estrutura física da página, cabeçalhos de registro e estrutura física de árvores B. Projetada para fornecer uma pequena verificação geral da consistência física do grupo de arquivos, essa verificação também pode detetar páginas rasgadas e falhas comuns de hardware que podem comprometer os dados. Uma execução completa de DBCC CHECKFILEGROUP pode levar consideravelmente mais tempo do que em versões anteriores. Esse comportamento ocorre devido aos seguintes motivos:

  • As verificações lógicas são mais abrangentes.
  • Algumas das estruturas subjacentes a verificar são mais complexas.
  • Muitas novas verificações foram introduzidas para incluir os novos recursos.

Observação

A documentação usa o termo árvore B geralmente em referência a índices. Em índices de armazenamento de linha, o Mecanismo de Banco de Dados implementa uma árvore B+. Isso não se aplica a índices columnstore ou índices em tabelas com otimização de memória. Para obter mais informações, consulte o SQL Server e o guia de design de arquitetura e design de índice SQL do Azure.

Portanto, usar a opção PHYSICAL_ONLY pode causar um tempo de execução muito menor para DBCC CHECKFILEGROUP em grandes grupos de arquivos e, portanto, é recomendado para uso frequente em sistemas de produção. Ainda recomendamos que uma execução completa de DBCC CHECKFILEGROUP seja realizada periodicamente. A frequência dessas execuções depende de fatores específicos de empresas individuais e ambientes de produção. PHYSICAL_ONLY sempre implica NO_INFOMSGS e não é permitido com nenhuma das opções de reparo.

Observação

Especificar PHYSICAL_ONLY faz com que DBCC CHECKFILEGROUP ignore todas as verificações de dados FILESTREAM.

MAXDOP

Aplica-se a: SQL Server 2014 Service Pack 2 e versões posteriores

Substitui o grau máximo de paralelismo opção de configuração de sp_configure para a instrução. O MAXDOP pode exceder o valor configurado com sp_configure. Se MAXDOP exceder o valor configurado com o Administrador de Recursos, o Mecanismo de Banco de Dados usará o valor de MAXDOP do Administrador de Recursos, descrito em ALTER WORKLOAD GROUP (Transact-SQL). Todas as regras semânticas usadas com a opção de configuração de grau máximo de paralelismo são aplicáveis quando você usa a dica de consulta MAXDOP. Para obter mais informações, consulte Configurar o grau máximo de paralelismo Opção de configuração do servidor.

Atenção

Se MAXDOP estiver definido como zero, o servidor escolhe o grau máximo de paralelismo.

Comentários

DBCC CHECKFILEGROUP e DBCC CHECKDB são comandos DBCC semelhantes. A principal diferença é que DBCC CHECKFILEGROUP é limitado ao único grupo de arquivos especificado e tabelas necessárias.

DBCC CHECKFILEGROUP executa os seguintes comandos:

Não é necessário executar DBCC CHECKALLOC ou DBCC CHECKTABLE separadamente do DBCC CHECKFILEGROUP.

Instantâneo do banco de dados interno

DBCC CHECKFILEGROUP usa um instantâneo de banco de dados interno para fornecer a consistência transacional que deve ter para executar essas verificações. Para obter mais informações, consulte Exibir o tamanho do arquivo esparso de um de instantâneo de banco de dados (Transact-SQL) e a seção de uso de instantâneo de banco de dados interno DBCC em DBCC (Transact-SQL).

Se não for possível criar um snapshot ou se a opção TABLOCK for especificada, DBCC CHECKFILEGROUP adquirirá bloqueios para obter a consistência necessária. Nesse caso, um bloqueio de banco de dados exclusivo é necessário para executar as verificações de alocação e bloqueios de tabela compartilhada são necessários para executar as verificações de tabela. TABLOCK faz com que DBCC CHECKFILEGROUP seja executado mais rapidamente em um banco de dados sob carga pesada, mas diminui a simultaneidade disponível no banco de dados enquanto DBCC CHECKFILEGROUP está em execução.

Observação

A execução de DBCC CHECKFILEGROUP contra tempdb não executa nenhuma verificação de alocação e deve adquirir bloqueios de tabela compartilhados para executar verificações de tabela. Isso ocorre porque, por motivos de desempenho, os instantâneos do banco de dados não estão disponíveis no tempdb. Isso significa que a consistência transacional necessária não pode ser obtida.

Verificar objetos em paralelo

Por padrão, DBCC CHECKFILEGROUP executa a verificação paralela de objetos. O grau de paralelismo é determinado automaticamente pelo processador de consultas. O grau máximo de paralelismo é configurado como consultas paralelas. Para restringir o número máximo de processadores disponíveis para verificação DBCC, use sp_configure. Para obter mais informações, consulte Configurar o grau máximo de paralelismo Opção de configuração do servidor.

A verificação paralela pode ser desativada usando o sinalizador de rastreamento 2528. Para obter mais informações, consulte Definir sinalizadores de rastreamento com DBCC TRACEON.

Índices não clusterizados em grupos de arquivos separados

Se um índice não clusterizado no grupo de arquivos especificado estiver associado a uma tabela em outro grupo de arquivos, o índice não será verificado porque a tabela base não está disponível para validação.

Se uma tabela no grupo de arquivos especificado tiver um índice não clusterizado em outro grupo de arquivos, o índice não clusterizado não será verificado devido ao seguinte:

  • A estrutura da tabela base não depende da estrutura de um índice não clusterizado. Os índices não clusterizados não precisam ser verificados para validar a tabela base.
  • O comando DBCC CHECKFILEGROUP valida objetos somente no grupo de arquivos especificado.

Um índice clusterizado e uma tabela não podem estar em grupos de arquivos diferentes; portanto, as considerações anteriores aplicam-se apenas a índices não clusterizados.

Tabelas particionadas em grupos de arquivos separados

Quando uma tabela particionada existe em vários grupos de arquivos, DBCC CHECKFILEGROUP verifica os conjuntos de linhas de partição que existem no grupo de arquivos especificado e ignora os conjuntos de linhas nos outros grupos de arquivos. A mensagem informativa 2594 indica as partições que não foram verificadas. Os índices não clusterizados não residentes no grupo de arquivos especificado não são verificados.

Compreender as mensagens de erro DBCC

Após a conclusão do comando DBCC CHECKFILEGROUP, uma mensagem é gravada no log de erros do SQL Server. Se o comando DBCC for executado com êxito, a mensagem indicará uma conclusão bem-sucedida e a quantidade de tempo que o comando foi executado. Se o comando DBCC parar antes de concluir a verificação devido a um erro, a mensagem indica que o comando foi encerrado, um valor de estado e a quantidade de tempo que o comando executou. A tabela a seguir lista e descreve os valores de estado que podem ser incluídos na mensagem.

Estado Descrição
0 O erro número 8930 foi gerado. Isso indica uma corrupção de metadados que causou o encerramento do comando DBCC.
1 O erro número 8967 foi gerado. Houve um erro interno do DBCC.
2 Ocorreu uma falha durante o reparo do banco de dados no modo de emergência.
3 Isso indica uma corrupção de metadados que causou o encerramento do comando DBCC.
4 Foi detetada uma violação de afirmação ou acesso.
5 Ocorreu um erro desconhecido que encerrou o comando DBCC.

Relatório de erros

Um arquivo de minidespejo (SQLDUMP<nnnn>.txt) é criado no diretório do SQL Server LOG sempre que DBCC CHECKFILEGROUP deteta um erro de corrupção. Quando os recursos de coleta de dados de Uso de Recursos e Relatório de Erros são habilitados para a instância do SQL Server, o arquivo é encaminhado automaticamente para a Microsoft. Os dados coletados são usados para melhorar a funcionalidade do SQL Server.

O arquivo de despejo contém os resultados do comando DBCC CHECKFILEGROUP e saída de diagnóstico adicional. O arquivo tem listas de controle de acesso discricionário (DACLs) restritas. O acesso é limitado à conta de serviço do SQL Server e aos membros da função sysadmin do. Por padrão, a função sysadmin contém todos os membros do grupo BUILTIN\Administradores do Windows e do grupo do administrador local. O comando DBCC não falhará se o processo de coleta de dados falhar.

Resolver erros

Se algum erro for relatado pelo DBCC CHECKFILEGROUP, recomendamos restaurar o banco de dados a partir do backup do banco de dados. As opções de reparo não podem ser especificadas para DBCC CHECKFILEGROUP.

Se não houver backup, executar DBCC CHECKDB com uma opção de reparo especificada corrige os erros relatados. A opção de reparo a ser usada é especificada no final da lista se houver erros relatados. Corrigir os erros usando a opção REPAIR_ALLOW_DATA_LOSS pode exigir que algumas páginas e, portanto, dados, sejam excluídos.

Conjuntos de resultados

DBCC CHECKFILEGROUP retorna o seguinte conjunto de resultados (os valores podem variar):

  • Exceto quando ESTIMATEONLY ou NO_INFOMSGS é especificado.
  • Para o banco de dados atual, se nenhum banco de dados for especificado, se todas as opções (exceto NOINDEX) serão especificadas ou não.
DBCC results for 'master'.
DBCC results for 'sys.sysrowsetcolumns'.
There are 630 rows in 7 pages for object 'sys.sysrowsetcolumns'.
DBCC results for 'sys.sysrowsets'.
There are 97 rows in 1 pages for object 'sys.sysrowsets'.
DBCC results for 'sysallocunits'.
There are 195 rows in 3 pages for object 'sysallocunits'.
  
There are 2340 rows in 16 pages for object 'spt_values'.
DBCC results for 'MSreplication_options'.
There are 2 rows in 1 pages for object 'MSreplication_options'.
CHECKFILEGROUP found 0 allocation errors and 0 consistency errors in database 'master'.
DBCC execution completed. If DBCC printed error messages, contact your system administrator.

Se NO_INFOMSGS for especificado, DBCC CHECKFILEGROUP retornará:

DBCC execution completed. If DBCC printed error messages, contact your system administrator.

Se ESTIMATEONLY for especificado, DBCC CHECKFILEGROUP retorna (os valores podem variar):

Estimated TEMPDB space needed for CHECKALLOC (KB)
-------------------------------------------------
15
  
(1 row(s) affected)
  
Estimated TEMPDB space needed for CHECKTABLES (KB)
--------------------------------------------------
207
  
(1 row(s) affected)
  
DBCC execution completed. If DBCC printed error messages, contact your system administrator.

Permissões

Requer associação à função de servidor fixa sysadmin ou à função de banco de dados fixa db_owner.

Exemplos

Um. Verifique o grupo de arquivos PRIMARY no banco de dados

O exemplo a seguir verifica o grupo de arquivos primário do banco de dados atual.

DBCC CHECKFILEGROUP;
GO

B. Verifique o grupo de arquivos PRIMARY do AdventureWorks sem índices não clusterizados

O exemplo a seguir verifica o grupo de arquivos primário do banco de dados AdventureWorks2025 (excluindo índices não clusterizados) especificando o número de identificação do grupo de arquivos primário e especificando NOINDEX.

USE AdventureWorks2022;
GO
DBCC CHECKFILEGROUP (1, NOINDEX);
GO

C. Verifique o grupo de arquivos PRIMARY com opções

O exemplo a seguir verifica o grupo de arquivos primário do banco de dados master e especifica a opção ESTIMATEONLY.

USE master;
GO
DBCC CHECKFILEGROUP (1)
WITH ESTIMATEONLY;

Ver também