DBCC CHECKIDENT (Transact-SQL)
Verifica o valor de identidade atual para a tabela especificada no SQL Server 2008 R2 e, se necessário, altera o valor de identidade. Você também pode usar DBCC CHECKIDENT para definir manualmente um novo valor de identidade atual para a coluna de identidade.
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 para uma tabela for menor que o valor de identidade máximo armazenado na coluna de identidade, ele será redefinido usando o valor máximo na coluna de identidade. Consulte a seção Exceções a seguir. |
DBCC CHECKIDENT ( table_name, RESEED, new_reseed_value ) |
Valor de identidade atual está 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. Para obter mais informações, consulte Criando e modificando colunas de identificador.
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
Estejam as opções para uma tabela que contém uma coluna de identidade especificadas ou não, DBCC CHECKIDENT retornará (valores podem variar):
Checking identity information: current identity value '290', current column value '290'. 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, quando necessário
O exemplo a seguir redefine o valor de identidade atual, quando necessário, da tabela AddressType, no banco de dados AdventureWorks2008R2.
USE AdventureWorks2008R2;
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 AddressType, no banco de dados AdventureWorks2008R2, mas não corrige o valor de identidade se estiver incorreto.
USE AdventureWorks2008R2;
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 valor da identidade atual mais 1, o valor de incremento atual definido para a coluna.
USE AdventureWorks2008R2;
GO
DBCC CHECKIDENT ("Person.AddressType", RESEED, 10);
GO