DBCC CHECKIDENT (Transact-SQL)
Comprueba el valor de identidad actual de la tabla especificada en SQL Server 2014 y, si fuera necesario, lo cambia. También puede utilizar DBCC CHECKIDENT para establecer manualmente un nuevo valor de identidad actual para la columna de identidad.
Se aplica a: SQL Server (SQL Server 2008 a través de la versión actual). |
Convenciones de sintaxis de Transact-SQL
Sintaxis
DBCC CHECKIDENT
(
table_name
[, { NORESEED | { RESEED [, new_reseed_value ] } } ]
)
[ WITH NO_INFOMSGS ]
Argumentos
table_name
Es el nombre de la tabla para la que se va a comprobar el valor de identidad actual. La tabla especificada debe contener una columna de identidad. Los nombres de tabla deben cumplir las reglas de los identificadores.NORESEED
Especifica que el valor de identidad actual no se debe cambiar.RESEED
Especifica que el valor de identidad actual se debería cambiar.new_reseed_value
Es el nuevo valor que se va a usar como valor de identidad actual de la columna de identidad.WITH NO_INFOMSGS
Suprime todos los mensajes de información.
Comentarios
Las correcciones concretas realizadas en el valor de identidad actual dependen de las especificaciones de los parámetros.
Comando DBCC CHECKIDENT |
Corrección o correcciones de identidad realizadas |
---|---|
DBCC CHECKIDENT (table_name, NORESEED) |
No se restablece el valor de identidad actual. DBCC CHECKIDENT devuelve el valor de identidad actual y el valor máximo actual de la columna de identidad. Si los dos valores no coinciden, debe restablecer el valor de identidad para evitar posibles errores o espacios en la secuencia de valores. |
DBCC CHECKIDENT (table_name) O bien: DBCC CHECKIDENT (table_name, RESEED) |
Si el valor de identidad actual de una tabla es menor que el valor de identidad máximo almacenado en la columna de identidad, se restablece con el valor máximo de la columna de identidad. Vea la sección "Excepciones" que aparece más adelante. |
DBCC CHECKIDENT ( table_name, RESEED, new_reseed_value ) |
El valor de identidad actual se establece en new_reseed_value. Si no se han insertado filas en la tabla desde su creación, o su todas las filas se han quitado con la instrucción TRUNCATE TABLE, la primera fila insertada después de ejecutar DBCC CHECKIDENT utiliza new_reseed_value como identidad. De lo contrario, la siguiente fila insertada utiliza new_reseed_value + el valor de incremento actual. Si la tabla no está vacía y se establece el valor de identidad en un número menor que el valor máximo de la columna de identidad, puede darse una de las siguientes condiciones:
|
Excepciones
En la tabla siguiente se muestran condiciones en las que DBCC CHECKIDENT no restablece automáticamente el valor de identidad actual y se proporcionan métodos para restablecer el valor.
Condición |
Métodos para restablecer |
---|---|
El valor de identidad actual es mayor que el valor máximo de la tabla. |
O bien:
|
Se eliminan todas las filas de la tabla. |
Ejecute DBCC CHECKIDENT (table_name, RESEED, new_reseed_value) con new_reseed_value establecido en el valor de inicio que desee. |
Cambiar el valor de inicialización
El valor de inicialización es el valor insertado en una columna de identidad para la primera fila cargada en la tabla. Todas las filas subsiguientes contienen el valor de identidad actual más el valor de incremento, donde el valor de identidad actual es el último valor de identidad generado para la tabla o vista.
No puede usar DBCC CHECKIDENT para realizar las tareas siguientes:
Cambiar el valor de inicialización original que se especificó para una columna de identidad cuando se creó la tabla o vista.
Reinicializar las filas existentes de una tabla o vista.
Para cambiar el valor de inicialización original y reinicializar cualquier fila existente, debe quitar la columna de identidad y volverla a crear especificando el nuevo valor de inicialización. Cuando la tabla contiene datos, los números de identidad se agregan a las filas existentes con los valores de inicialización e incremento especificados. No se garantiza el orden en que las filas se actualizan.
Conjuntos de resultados
Tanto si se especifican opciones para una tabla que contiene una columna de identidad como si no, DBCC CHECKIDENT devuelve el mensaje siguiente para todas las operaciones excepto cuando se especifica un nuevo valor de inicialización.
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.
Cuando DBCC CHECKIDENT se utiliza para especificar un nuevo valor de inicialización mediante RESEED new_reseed_value, se devuelve el mensaje siguiente.
Checking identity information: current identity value '<current identity value>'. DBCC execution completed. If DBCC printed error messages, contact your system administrator.
Permisos
El autor de la llamada debe ser el propietario de la tabla o debe ser miembro del rol fijo de servidor sysadmin o de los roles fijos de base de datos db_owner o db_ddladmin.
Ejemplos
A.Restablecer el valor de identidad actual si es necesario
En el ejemplo siguiente, si es necesario, se restablece el valor de identidad actual de la tabla especificada en la base de datos AdventureWorks2012 .
USE AdventureWorks2012;
GO
DBCC CHECKIDENT ('Person.AddressType');
GO
B.Informar del valor de identidad actual
En el ejemplo siguiente se notifica el valor de identidad actual de la tabla especificada en la base de datos AdventureWorks2012 , y no se corrige el valor de identidad si es incorrecto.
USE AdventureWorks2012;
GO
DBCC CHECKIDENT ('Person.AddressType', NORESEED);
GO
C.Hacer que el valor de identidad actual sea un nuevo valor
En el ejemplo siguiente, el valor de identidad actual de la columna AddressTypeID de la tabla AddressType se establece en el valor 10. Dado que la tabla ya contiene filas, la fila siguiente que se inserte utilizará el valor 11, es decir, el nuevo valor de identidad actual definido para el valor de columna más 1.
USE AdventureWorks2012;
GO
DBCC CHECKIDENT ('Person.AddressType', RESEED, 10);
GO
Vea también
Referencia
IDENTITY (propiedad de Transact-SQL)