Kin le ha mostrado cómo puede restablecer el valor de IDENTIDAD, pero fuera de un entorno de desarrollo cuando realmente está eliminando todos los datos, ¿por qué necesita hacer esto?
Espero que no tenga la intención de mantener una secuencia contigua de valores de IDENTIDAD cuando esté en producción. Y espero que realmente no esté escribiendo su código para codificar los valores de IDENTIDAD. Si estos son valores de ID significativos, entonces debe dejar de usar la propiedad IDENTITY.
Hay algunas cosas que evitarán que esto suceda:
- si se asigna un valor de IDENTIDAD durante una transacción, y la transacción se revierte, el valor no se "devuelve" y el siguiente valor será el que nunca se usó + 1.
- Si una fila se elimina más tarde, la IDENTIDAD nunca regresa para llenar los vacíos.
- hay un error activo en SQL Server 2012 que
no se solucionará hasta que SQL Server 2014 nunca se repare (a menos que use un indicador de seguimiento indocumentado y muy costoso) por el cual un reinicio parecerá descartar hasta 1000 valores de su columna IDENTITY . El error en Connect sugiere que esto está restringido a eventos de conmutación por error que involucran grupos de disponibilidad, pero puedo asegurarle que el error es mucho más amplio que eso.
En resumen, si le importan las lagunas o desea dar un significado específico a estos valores, deje de usar IDENTITY. Descarte y vuelva a crear la tabla y, cuando necesite eliminar los valores y volver a llenarlos, realice una actualización o realice una inserción con valores codificados para esa columna.
Por otro lado, la clave primaria y la identidad no son lo mismo. Una columna de identidad no es una clave principal a menos que la defina explícitamente como tal, y ciertamente puede tener una clave primaria que no sea una columna de identidad.