DBCC CHECKALLOC (Transact-SQL)DBCC CHECKALLOC (Transact-SQL)

APLICA-SE A: simSQL Server simBanco de Dados SQL do Azure nãoSQL Data Warehouse do Azure nãoParallel Data Warehouse APPLIES TO: yesSQL Server yesAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

Verifica a consistência de estruturas de alocação de espaço em disco para um banco de dados especificado.Checks the consistency of disk space allocation structures for a specified database.

Ícone de link do tópico Convenções de sintaxe de Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SintaxeSyntax

DBCC CHECKALLOC   
[  
    ( database_name | database_id | 0   
      [ , NOINDEX   
      | , { REPAIR_ALLOW_DATA_LOSS | REPAIR_FAST | REPAIR_REBUILD } ]  
    )  
    [ WITH   
        {   
          [ ALL_ERRORMSGS ]  
          [ , NO_INFOMSGS ]   
          [ , TABLOCK ]   
          [ , ESTIMATEONLY ]   
        }  
    ]  
]  

ArgumentosArguments

database_name | database_id | 0database_name | database_id | 0
O nome ou a ID do banco de dados cuja alocação e o uso de página serão verificados.The name or the ID of the database for which to check allocation and page usage. Se não for especificado ou se 0 for especificado, o banco de dados atual será usado.If not specified, or if 0 is specified, the current database is used. Os nomes de banco de dados precisam seguir as regras para identificadores.Database names must follow the rules for identifiers.

NOINDEXNOINDEX
Especifica que os índices não clusterizados para tabelas de usuário não devem ser verificados.Specifies that nonclustered indexes for user tables should not be checked.
NOINDEX é mantido somente para compatibilidade com versões anteriores e não afeta DBCC CHECKALLOC.NOINDEX is maintained for backward compatibility only and does not affect DBCC CHECKALLOC.

REPAIR_ALLOW_DATA_LOSS | REPAIR_FAST | REPAIR_REBUILDREPAIR_ALLOW_DATA_LOSS | REPAIR_FAST | REPAIR_REBUILD
Especifica que DBCC CHECKALLOC repara os erros encontrados.Specifies that DBCC CHECKALLOC repair the found errors. database_name precisa estar no modo de usuário único.database_name must be in single-user mode.

REPAIR_ALLOW_DATA_LOSSREPAIR_ALLOW_DATA_LOSS
Tenta reparar qualquer erro encontrado.Tries to repair any errors that are found. Esses reparos podem provocar alguma perda de dados.These repairs can cause some data loss. REPAIR_ALLOW_DATA_LOSS é a única opção que permite que erros de alocação sejam reparados.REPAIR_ALLOW_DATA_LOSS is the only option that allows for allocation errors to be repaired.

REPAIR_FASTREPAIR_FAST
A sintaxe é mantida apenas para compatibilidade com versões anteriores.Syntax is maintained for backward compatibility only. Nenhuma ação de reparo é executada.No repair actions are performed.

REPAIR_REBUILDREPAIR_REBUILD
Não aplicável.Not applicable.
Use as opções REPAIR apenas como um último recurso.Use the REPAIR options only as a last resort. Para reparar erros, recomendamos restaurar de um backup.To repair errors, we recommend restoring from a backup. Operações de reparo não consideram nenhuma das restrições que podem existir em tabelas ou entre tabelas.Repair operations do not consider any of the constraints that may exist on or between tables. Se a tabela especificada estiver envolvida em uma ou mais restrições, recomendamos executar DBCC CHECKCONSTRAINTS após uma operação de reparo.If the specified table is involved in one or more constraints, we recommend running DBCC CHECKCONSTRAINTS after a repair operation. Se for necessário usar REPAIR, execute DBCC CHECKDB sem uma opção de reparo para localizar o nível de reparo a ser usado.If you must use REPAIR, run DBCC CHECKDB without a repair option to find the repair level to use. Se você usar o nível de REPAIR_ALLOW_DATA_LOSS, recomendamos fazer backup do banco de dados antes de executar DBCC CHECKDB com essa opção.If you use the REPAIR_ALLOW_DATA_LOSS level, we recommend that you back up the database before you run DBCC CHECKDB with this option.

comWITH
Permite que opções sejam especificadas.Enables options to be specified.

ALL_ERRORMSGSALL_ERRORMSGS
Exibe todas as mensagens de erro.Displays all error messages. Todas as mensagens de erro são exibidas por padrão.All error messages are displayed by default. Especificar ou omitir esta opção não têm nenhum efeito.Specifying or omitting this option has no effect.

NO_INFOMSGSNO_INFOMSGS
Suprime todas as mensagens informativas e o relatório de espaço utilizado.Suppresses all informational messages and the report of space used.

TABLOCKTABLOCK
Faz o comando DBCC obter um bloqueio de banco de dados exclusivo.Causes the DBCC command to obtain an exclusive database lock.

ESTIMATE ONLYESTIMATE ONLY
Exibe a quantidade estimada de espaço no tempdb necessária para executar DBCC CHECKALLOC quando todas as outras opções são especificadas.Displays the estimated amount of tempdb space that is required to run DBCC CHECKALLOC when all the other options are specified.

RemarksRemarks

DBCC CHECKALLOC verifica a alocação de todas as páginas no banco de dados, independentemente do tipo de página ou do tipo de objeto ao qual elas pertencem.DBCC CHECKALLOC checks the allocation of all pages in the database, regardless of the type of page or type of object to which they belong. Isso também valida as diversas estruturas internas usadas para manter o controle dessas páginas e das relações entre elas.It also validates the various internal structures that are used to keep track of these pages and the relationships between them. Se NO_INFOMSGS não for especificado, DBCC CHECKALLOC coletará informações sobre uso de espaço para todos os objetos no banco de dados.If NO_INFOMSGS is not specified, DBCC CHECKALLOC collects space usage information for all objects in the database. Essas informações são impressas juntamente com os erros encontrados.This information is printed together with any errors that are found.

Observação

A funcionalidade DBCC CHECKALLOC está incluída no DBCC CHECKDB e no DBCC CHECKFILEGROUP.The DBCC CHECKALLOC functionality is included in DBCC CHECKDB and DBCC CHECKFILEGROUP. Isso significa que não é preciso executar DBCC CHECKALLOC separadamente dessas instruções.This means that you do not have to run DBCC CHECKALLOC separately from these statements. DBCC CHECKALLOC não verifica dados FILESTREAM.DBCC CHECKALLOC does not check FILESTREAM data. FILESTREAM armazena BLOBS (objetos binários grandes) no sistema de arquivos.FILESTREAM stores binary large objects (BLOBS) on the file system.

Instantâneo de banco de dados internoInternal Database Snapshot

DBCC CHECKALLOC usa um instantâneo de banco de dados interno para fornecer a consistência transacional necessária ao executar essas verificações.DBCC CHECKALLOC uses an internal database snapshot to provide the transactional consistency that it needs to perform these checks. Se não for possível criar um instantâneo ou se TABLOCK for especificado, DBCC CHECKALLOC tentará adquirir um bloqueio exclusivo (X) no banco de dados para obter a consistência necessária.If a snapshot cannot be created, or TABLOCK is specified, DBCC CHECKALLOC tries to acquire an exclusive (X) lock on the database to obtain the required consistency.

Observação

A execução de DBCC CHECKALLOC no tempdb não realiza nenhuma verificação.Running DBCC CHECKALLOC against tempdb does not perform any checks. Isso porque, por razões de desempenho, instantâneos do banco de dados não estão disponíveis em tempdb.This is because, for performance reasons, database snapshots are not available on tempdb. Isso significa que não é possível obter a consistência transacional exigida.This means that the required transactional consistency cannot be obtained. Pare e inicie o serviço MSSQLSERVER para resolver problemas de alocação do tempdb.Stop and start the MSSQLSERVER service to resolve any tempdb allocation issues. Essa ação descarta e recria o banco de dados tempdb.This action drops and re-creates the tempdb database.

Compreendendo mensagens de erro DBCCUnderstanding DBCC Error Messages

Depois que o comando DBCC CHECKALLOC é encerrado, uma mensagem é gravada no log de erros do SQL ServerSQL Server.After the DBCC CHECKALLOC command finishes, a message is written to the SQL ServerSQL Server error log. Se o comando DBCC for executado com êxito, a mensagem indicará uma conclusão bem-sucedida e o tempo de execução do comando.If the DBCC command successfully executes, the message indicates a successful completion and the amount of time that the command ran. Se o comando DBCC parar antes de concluir a verificação devido a um erro, a mensagem indicará que o comando foi finalizado, um valor de estado e a duração da execução do comando.If the DBCC command stops before completing the check because of an error, the message indicates the command was terminated, a state value, and the amount of time the command ran. A tabela a seguir lista e descreve os valores de estado que podem ser incluídos na mensagem.The following table lists and describes the state values that can be included in the message.

EstadoState DescriçãoDescription
00 O número do erro 8930 foi gerado.Error number 8930 was raised. Isso indica um dano de metadados que provocou a finalização do comando DBCC.This indicates a metadata corruption that caused the DBCC command to terminate.
11 O erro número 8967 foi gerado.Error number 8967 was raised. Ocorreu um erro interno de DBCC.There was an internal DBCC error.
22 Ocorreu uma falha durante o reparo do banco de dados em modo de emergência.A failure occurred during emergency mode database repair.
33 Isso indica um dano de metadados que provocou a finalização do comando DBCC.This indicates a metadata corruption that caused the DBCC command to terminate.
44 Uma declaração ou violação de acesso foi detectada.An assert or access violation was detected.
55 Ocorreu um erro desconhecido que finalizou o comando DBCC.An unknown error occurred that terminated the DBCC command.

Relatório de ErrosError Reporting

Um miniarquivo de despejo (SQLDUMPnnnn.txt) é criado no diretório LOG do SQL ServerSQL Server sempre que DBCC CHECKALLOC detecta um erro de corrupção.A mini-dump file (SQLDUMPnnnn.txt) is created in the SQL ServerSQL Server LOG directory whenever DBCC CHECKALLOC detects a corruption error. Quando os recursos de coleta de dados Uso de Recursos e Relatório de Erros são habilitados para a instância do SQL ServerSQL Server, o arquivo é encaminhado automaticamente à MicrosoftMicrosoft.When the Feature Usage data collection and Error Reporting features are enabled for the instance of SQL ServerSQL Server, the file is automatically forwarded to MicrosoftMicrosoft. Os dados coletados são usados para aprimorar a funcionalidade do SQL ServerSQL Server.The collected data is used to improve SQL ServerSQL Server functionality. O arquivo de despejo contém os resultados do comando DBCC CHECKALLOC e saídas de diagnóstico adicionais.The dump file contains the results of the DBCC CHECKALLOC command and additional diagnostic output. O arquivo tem DACLs (listas de controle de acesso discricionário) restritas.The file has restricted discretionary access-control lists (DACLs). O acesso é limitado à conta de serviço do SQL ServerSQL Server e aos membros da função sysadmin.Access is limited to the SQL ServerSQL Server service account and members of the sysadmin role. Por padrão, a função sysadmin contém todos os membros do grupo BUILTIN\Administradores do Windows e do grupo do administrador local.By default, the sysadmin role contains all members of the Windows BUILTIN\Administrators group and the local administrator's group. O comando DBCC não falhará se o processo de coleta de dados falhar.The DBCC command does not fail if the data collection process fails.

Resolvendo errosResolving Errors

Se qualquer erro for relatado pelo DBCC CHECKALLOC, é recomendável restaurar o banco de dados do backup em vez de executar um reparo.If DBCC CHECKALLOC reports any errors, we recommend that you restore the database from the database backup instead of running a repair. Se não existir um backup, executar um reparo pode corrigir os erros relatados, entretanto, a correção dos erros pode exigir que algumas páginas e, portanto, dados sejam excluídos.If a backup does not exist, running a repair can correct the reported errors; however, correcting the errors might require some pages, and therefore data, to be deleted. Um reparo pode ser executado em uma transação de usuário.A repair can be performed in a user transaction. Isso permite que alterações sejam revertidas.This allows for changes to be rolled back. Se as alterações forem revertidas, o banco de dados ainda conterá erros e deverá ser restaurado de um backup.If changes are rolled back, the database will still contain errors and must be restored from a backup. Depois que os reparos forem concluídos, faça backup do banco de dados.After the repairs finish, back up the database.

Conjuntos de resultadosResult Sets

As tabelas a seguir descrevem as informações retornadas por DBCC CHECKALLOC.The following tables describe the information that DBCC CHECKALLOC returns.

ItemItem DescriçãoDescription
FirstIAMFirstIAM Somente para uso interno.Internal use only.
RootRoot Somente para uso interno.Internal use only.
DpagesDpages Contagem de páginas de dados.Data page count.
Pages usedPages used Páginas alocadas.Allocated pages.
Dedicated extentsDedicated extents Extensões alocadas ao objeto.Extents allocated to the object.

Se forem usadas páginas de alocação mistas, pode haver páginas alocadas sem extensões.If mixed allocation pages are used, there might be pages allocated without extents.

DBCC CHECKALLOC também relata um resumo de alocação para cada índice e partição em cada arquivo.DBCC CHECKALLOC also reports an allocation summary for each index and partition in each file. Esse resumo descreve a distribuição dos dados.This summary describes the distribution of the data.

ItemItem DescriçãoDescription
Reserved pagesReserved pages As páginas alocadas para o índice e as páginas não usadas em extensões alocadas.Pages allocated to the index and the unused pages in allocated extents.
Used pagesUsed pages Páginas alocadas e usadas pelo índice.Pages allocated and being used by the index.
Partition IDPartition ID Somente para uso interno.Internal use only.
Alloc unit IDAlloc unit ID Somente para uso interno.Internal use only.
Dados em linhaIn-row data As páginas contêm dados de índice ou de heap.Pages contain index or heap data.
Dados LOBLOB data As páginas contêm dados varchar(max) , nvarchar(max) , varbinary(max) , text, ntext, XML e image.Pages contain varchar(max), nvarchar(max), varbinary(max), text, ntext, xml, and image data.
Dados do estouro de linhaRow-overflow data As páginas contêm dados de coluna do comprimento de variável que foram enviados por push para fora da linha.Pages contain variable-length column data that has been pushed off-row.

DBCC CHECKALLOC retorna o conjunto de resultados a seguir (os valores podem variar), exceto quando ESTIMATEONLY ou NO_INFOMSGS é especificado.DBCC CHECKALLOC returns the following result set (values may vary), except when ESTIMATEONLY or NO_INFOMSGS is specified.

DBCC results for 'master'.  
***************************************************************  
Table sysobjects                Object ID 1.  
Index ID 1         FirstIAM (1:11)   Root (1:12)    Dpages 22.  
    Index ID 1. 24 pages used in 5 dedicated extents.  
Index ID 2         FirstIAM (1:1368)   Root (1:1362)    Dpages 10.  
    Index ID 2. 12 pages used in 2 dedicated extents.  
Index ID 3         FirstIAM (1:1392)   Root (1:1408)    Dpages 4.  
    Index ID 3. 6 pages used in 0 dedicated extents.  
Total number of extents is 7.  
***************************************************************  
'...'  
***************************************************************  
Table spt_server_info                Object ID 1938105945.  
Index ID 1         FirstIAM (1:520)   Root (1:508)    Dpages 1.  
    Index ID 1. 3 pages used in 0 dedicated extents.  
Total number of extents is 0.  
***************************************************************  
Processed 52 entries in sysindexes for database ID 1.  
File 1. Number of extents = 210, used pages = 1126, reserved pages = 1280.  
           File 1 (number of mixed extents = 73, mixed pages = 184).  
    Object ID 1, Index ID 0, data extents 5, pages 24, mixed extent pages 9.  
'...'  
    Object ID 1938105945, Index ID 0, data extents 0, pages 3, mixed extent pages 3.  
Total number of extents = 210, used pages = 1126, reserved pages = 1280 in this database.  
       (number of mixed extents = 73, mixed pages = 184) in this database.  
CHECKALLOC found 0 allocation errors and 0 consistency errors in database 'master'.  
DBCC results for 'master'.  
***************************************************************  
Table sys.sysrowsetcolumns                Object ID 4.  
Index ID 1, partition ID 262144, alloc unit ID 262144 (type In-row data). FirstIAM (1:98). Root (1:94). Dpages 7.  
Index ID 1, partition ID 262144, alloc unit ID 262144 (type In-row data). 9 pages used in 1 dedicated extents.  
Index ID 1, partition ID 262144, alloc unit ID 262398 (type Row-overflow data). FirstIAM (0:0). Root (0:0). Dpages 0.  
Index ID 1, partition ID 262144, alloc unit ID 262398 (type Row-overflow data). 0 pages used in 0 dedicated extents.  
Total number of extents is 1.  
...  
***************************************************************  
Processed 201 entries in system catalog for database ID 1.  
File 1. Number of extents = 44, used pages = 300, reserved pages = 345.  
           File 1 (number of mixed extents = 29, mixed pages = 225).  
    Object ID 4, index ID 1, partition ID 262144, alloc unit ID 262144 (type In-row data), data extents 1, pages 9, mixed extent pages 8.  
    Object ID 5, index ID 1, partition ID 327680, alloc unit ID 327680 (type In-row data), data extents 0, pages 2, mixed extent pages 2.  
    Object ID 7, index ID 1, partition ID 458752, alloc unit ID 458752 (type In-row data), data extents 0, pages 5, mixed extent pages 5.  
    Object ID 8, index ID 0, partition ID 524288, alloc unit ID 524288 (type In-row data), data extents 0, pages 2, mixed extent pages 2.  
    Object ID 13, index ID 1, partition ID 851968, alloc unit ID 851968 (type In-row data), data extents 1, pages 9, mixed extent pages 8.  
    Object ID 15, index ID 1, partition ID 983040, alloc unit ID 983040 (type In-row data), data extents 0, pages 2, mixed extent pages 2.  
    Object ID 26, index ID 1, partition ID 281474978414592, alloc unit ID 1703937 (type In-row data), data extents 0, pages 3, mixed extent pages 3.  
    Object ID 27, index ID 1, partition ID 281474978480128, alloc unit ID 1769473 (type In-row data), data extents 0, pages 3, mixed extent pages 3.  
    Object ID 27, index ID 2, partition ID 562949955190784, alloc unit ID 1769474 (type In-row data), index extents 0, pages 3, mixed extent pages 3.  
...  
    Object ID 1179151246, index ID 1, partition ID 72057594038845440, alloc unit ID 13435136 (type In-row data), data extents 2, pages 18, mixed extent pages 8.  
    Object ID 1179151246, index ID 2, partition ID 72057594038910976, alloc unit ID 13566208 (type In-row data), index extents 1, pages 16, mixed extent pages 8.  
    Object ID 1911677858, index ID 0, partition ID 72057594039631872, alloc unit ID 15073536 (type In-row data), data extents 0, pages 2, mixed extent pages 2.  
Total number of extents = 41, used pages = 289, reserved pages = 323 in this database.  
       (number of mixed extents = 27, mixed pages = 211) in this database.  
CHECKALLOC found 0 allocation errors and 0 consistency errors in database 'master'.  
DBCC execution completed. If DBCC printed error messages, contact your system administrator.  

Quando ESTIMATEONLY é especificado, DBCC CHECKALLOC retorna o conjunto de resultados a seguir.When ESTIMATEONLY is specified, DBCC CHECKALLOC returns the following result set.

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

PermissõesPermissions

Requer associação à função de servidor fixa sysadmin ou à função de banco de dados fixa db_owner.Requires membership in the sysadmin fixed server role or the db_owner fixed database role.

ExemplosExamples

O exemplo a seguir executa DBCC CHECKALLOC para o banco de dados atual e o banco de dados AdventureWorks2012.The following example executes DBCC CHECKALLOC for the current database and for the AdventureWorks2012 database.

-- Check the current database.  
DBCC CHECKALLOC;  
GO  
-- Check the AdventureWorks2012 database.  
DBCC CHECKALLOC (AdventureWorks2012);  
GO  

Consulte TambémSee Also

DBCC (Transact-SQL)DBCC (Transact-SQL)