2010-11-12 11 views
8

¿Puedo utilizar el comandocolumnas de identidad RESEED en la base de datos

DBCC CHECKIDENT(<table_name>, RESEED, value) 

para restablecer una columna de valor de la corriente de identidad con el original de SQL Server 2008?

En caso afirmativo, ¿es esta la forma correcta de realizar esta operación sin ningún inconveniente? Si no, ¿hay una forma alternativa de hacer esto?

+1

¿Cuál es su pregunta? – Andomar

+2

En realidad, hay tres preguntas aquí. Estoy seguro de que puede verlos ... si necesita más explicaciones simplemente pregunte – Lorenzo

Respuesta

7

¿Puedo utilizar el comando DBCC CHECKIDENT para restablecer el valor actual de una columna de identidad a la original en SQL Server 2008?

Sí.

En caso afirmativo, ¿es esta la forma correcta de realizar esta operación sin ningún inconveniente?

Esta es la manera documentada de hacerlo.

Posibles inconvenientes: podría obtener valores IDENTITY duplicados - SQL Server no garantiza que no devolverá un valor que no esté en uso.

E.g. si actualmente su número IDENTITY es 100 y lo restablece a 1, lo más probable es que tarde o temprano genere un valor que ya está en uso.

El IDENTITY implementado en SQL Server no comprueba los valores existentes ni nada, solo produce números secuenciales. Depende de usted, especialmente si realizó un RESEED en ese IDENTITY para asegurarse de que los valores no estén duplicados.

10

El valor se puede omitir. tanto, si utiliza

DBCC CHECKIDENT (<table_name>, RESEED); 

SQL Server establece el valor ident al siguiente número correcto - de acuerdo a los números que ya están en uso. Esta es la única forma de restablecer los valores de identidad que conozco.

+0

Esto no funcionó hasta que le di los valores de replaed explícitamente – Niraj

+0

EG: Estableciendo su identidad para comenzar en 2000: 'DBCC CHECKIDENT (, RESEED, 2000) ' – Tr1stan

0

Tiene un gran inconveniente si y solo si el feild es una clave primaria y hace referencia a cualquier clave foránea en cualquier otra tabla. resiembra ayuda a la obtención de registros en la tabla de transacciones que tienen índices en el campo.

Cuestiones relacionadas