DBCC CHECKIDENT (Transact-SQL)
Verifica o valor de identidade atual da tabela especificada no SQL Server 2012 e, se necessário, altera o valor da identidade. Você também pode usar DBCC CHECKIDENT para definir manualmente um novo valor de identidade atual para a coluna de identidade.
Convenções da sintaxe Transact-SQL
Sintaxe
DBCC CHECKIDENT
(
table_name
[, { NORESEED | { RESEED [, new_reseed_value ] } } ]
)
[ WITH NO_INFOMSGS ]
Argumentos
table_name
É o nome da tabela sobre a qual verificar o valor de identidade atual. A tabela especificada deve conter uma coluna de identidade. Nomes de tabelas devem ser compatíveis com as regras para identificadores.NORESEED
Especifica que o valor de identidade atual não deve ser alterado.RESEED
Especifica que o valor de identidade atual deve ser alterado.new_reseed_value
O novo valor a ser usado como o valor atual da coluna de identidade.WITH NO_INFOMSGS
Suprime todas as mensagens informativas.
Comentários
As correções específicas feitas no valor de identidade atual dependem das especificações de parâmetro.
Comando DBCC CHECKIDENT |
Correção de Identidade ou correções feitas |
---|---|
DBCC CHECKIDENT ( table_name, NORESEED ) |
Valor de identidade atual não é redefinido. DBCC CHECKIDENT retorna o valor de identidade atual e o valor máximo atual da coluna de identidade. Se os dois valores não coincidirem, redefina o valor de identidade para evitar erros em potencial ou intervalos na sequência de valores. |
DBCC CHECKIDENT ( table_name) ou DBCC CHECKIDENT ( table_name, RESEED ) |
Se o valor de identidade atual de uma tabela for menor que o valor de identidade máximo armazenado na coluna de identidade, ele será redefinido por meio do valor máximo na coluna de identidade. Consulte a seção de 'Exceções' a seguir. |
DBCC CHECKIDENT ( table_name, RESEED, new_reseed_value ) |
O valor da identidade atual é definido em new_reseed_value. Se nenhuma linha foi inserida na tabela desde sua criação, ou se todas as linhas foram removidas usando a instrução TRUNCATE TABLE, a primeira linha inserida após a execução de DBCC CHECKIDENT usará new_reseed_value como a identidade. Caso contrário, a próxima linha inserida usará new_reseed_value + o valor incremento atual. Se a tabela não estiver vazia, definir o valor de identidade em um número menor que o valor máximo na coluna de identidade poderá resultar em uma das seguintes condições:
|
Exceções
A tabela a seguir lista condições quando DBCC CHECKIDENT não redefine o valor de identidade atual automaticamente, e oferece métodos para redefini-lo.
Condição |
Métodos de redefinição |
---|---|
O valor de identidade atual é maior do que o valor máximo na tabela. |
ou
|
Todas as linhas são excluídas da tabela. |
Execute DBCC CHECKIDENT (table_name, RESEED, new_reseed_value) com new_reseed_value definido para o valor inicial desejado. |
Alterando o valor de semente
O valor de semente é o valor inserido em uma coluna de identidade na primeira linha carregada na tabela. Todas as linhas subsequentes contêm o valor de identidade atual além do valor de incremento, em que o valor de identidade atual é o último valor de identidade gerado para a tabela ou exibição.
Não é possível usar DBCC CHECKIDENT para executar as seguintes tarefas:
Alterar o valor de semente original que foi especificado para uma coluna de identidade quando a tabela ou exibição foram criadas.
Propagar novamente linhas existentes em uma tabela ou exibição.
Para alterar o valor de semente original e propagar novamente todas as linhas existentes, é necessário descartar a coluna de identidade e recriá-la especificando o novo valor de semente. Quando a tabela contém dados, os números de identidade são adicionados às linhas existentes com os valores de semente e de incremento especificados. A ordem em que as linhas são atualizadas não é garantida.
Conjuntos de resultados
Quer uma das opções seja especificada ou não para uma tabela que contém uma coluna de identidade, DBCC CHECKIDENT retorna a mensagem a seguir para todas as operações, exceto durante a especificação de um novo valor de semente.
Checking identity information: current identity value '<current identity value>', current column value '<current column value>'. DBCC execution completed. If DBCC printed error messages, contact your system administrator.
Quando DBCC CHECKIDENT é usado para especificar um novo valor de semente com RESEED new_reseed_value, a mensagem a seguir é retornada.
Checking identity information: current identity value '<current identity value>'. DBCC execution completed. If DBCC printed error messages, contact your system administrator.
Permissões
O chamador deve ter a tabela ou ser membro da função de servidor fixa sysadmin, da função de banco de dados fixa db_owner ou da função de banco de dados fixa db_ddladmin.
Exemplos
A.Redefinindo o valor de identidade atual, se necessário
O exemplo a seguir redefine o valor de identidade atual, quando necessário, da tabela especificada no banco de dados AdventureWorks2012 .
USE AdventureWorks2012;
GO
DBCC CHECKIDENT ('Person.AddressType');
GO
B.Relatando o valor de identidade atual
O exemplo a seguir informa o valor de identidade atual na tabela especificada no banco de dados AdventureWorks2012 , e não corrige esse valor quando ele está incorreto.
USE AdventureWorks2012;
GO
DBCC CHECKIDENT ('Person.AddressType', NORESEED);
GO
C.Forçando o valor de identidade atual para um novo valor
O exemplo a seguir força o valor de identidade atual na coluna AddressTypeID na tabela AddressType para um valor de 10. Como a tabela tem as linhas existentes, a próxima linha inserida usará 11 como o valor, isto é, o novo valor de incremento atual definido para o valor da coluna mais 1.
USE AdventureWorks2012;
GO
DBCC CHECKIDENT ('Person.AddressType', RESEED, 10);
GO
Consulte também
Referência
IDENTITY (propriedade) (Transact-SQL)