viernes, 13 de octubre de 2017

SQL Server DBCC CHECKIDENT

Comando DBCC CHECKIDENT  


En una entrega anterior, en Comandos DBCC de validación, indicamos que este comando comprueba el valor de identidad actual de la tabla especificada en Microsoft SQL Server y, si fuera necesario, lo cambia. Pero,  ¿qué significa eso? Hay que recordar que en una tabla en Microsoft SQL Server puede indicarse que una columna de tipo entero tenga la facilidad de ser declarada una columna de identidad, IDENTITY, estableciendo un valor inicial y un valor de incremento. Es por ello que también se puede utilizar el comando para establecer manualmente un nuevo valor de identidad actual para la columna de identidad.
En este comando será necesario que se localice antes la base de datos que contiene la tabla con la columna de identidad.

La sintaxis de este comando en su forma más simple es:

USE [database_name];
GO

DBCC CHECKIDENT (‘table_name’);
GO


En este caso se observa que se desea llevar a cabo la comprobación y restauración del valor de la columna de identidad de la tabla identificada como table_name . Debe recordarse que el nombre de la tabla debe seguir las reglas establecidas para los identificadores y puede ser especificado con 2 o 3 elementos, esto es indicando el nombre del esquema y la tabla o bien indicando la base de datos, el esquema y la tabla, es indispensable que en cualquier caso se incluya el separador definido con punto y delimitarse adecuadamente, por ejemplo;  ‘Schema1.table1’ o bien [Schema1.table1].

Es importante indicar, que si bien muchos de los comandos DBCC registran actividad en el Log de Microsoft SQL Server, este  comando no genera una entrada en el archivo, ya que no afecta el funcionamiento de la base de datos.
La sintaxis que se usa más a menudo es:
USE [database_name];
GO
DBCC CHECKIDENT (‘table_name’, RESEED);

El comando anterior lleva a cabo una validación de la columna de identidad de la tabla especificada y restablece el valor de la identidad, al valor especificado cuando se creó la tabla. Es importante mencionar que este comando no asume por omisión una tabla de la base de datos, debe indicarse que tabla es la que se desea validar en su columna de identidad. La sintaxis e información completa de este comando se encuentran en los libros en línea de Microsoft SQL Server.
Existen algunos argumentos opcionales  que pueden ser utilizadas con el comando, estos son:

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.

Ejemplos de DBCC CHECKIDENT


Mostraré algunos ejemplos de uso de este comando:

USE [database_name];
GO
DBCC CHECKIDENT ([table_name], NORESEED);

Este comando efectuará la comprobación de la columna de identidad de la tabla indicada sin restablecer el valor de la identidad, devuelve el valor de identidad actual y el valor máximo actual de la columna de identidad.

USE [database_name];
GO
DBCC CHECKIDENT ([table_name]) WITH NO_INFOMSGS

Este comando efectuará la comprobación de la columna de identidad de la tabla indicada, sin mostrar mensajes informativos, solo indicara cuando el comando haya terminado.

USE [database_name];
GO
DBCC CHECKIDENT ([table_name], RESEED, 100) WITH NO_INFOMSGS

Este comando efectuará la comprobación de la columna de identidad de la tabla indicada, restableciendo el valor de identidad en 100, sin mostrar los mensajes informativos, solo indicara que el comando termino. Es importante indicar que si hay renglones en la tabla que estén siendo ocupados por la columna de identidad, de acuerdo con la especificación anterior, entonces esos renglones se conservaran y la siguiente operación iniciara con el valor especificado. Debe tenerse cuidado cuando se establece un nuevo número de base, ya que en caso de que haya renglones con  valores mayores al especificado puede generar errores.

Comentarios


Es necesario indicar que no es posible usar el comando DBCC CHECKIDENT para realizar el cambio en el valor de inicialización original que se especificó para una columna de identidad cuando se creó la tabla o vista, o bien, para reinicializar las filas existentes de una tabla o vista.

No hay comentarios.:

Publicar un comentario