Los campos identity se saltan 1000 números aleatoriamente

5 replies [Último envío]
Imagen de carlos
Offline
Joined: 28/12/2005
Puntos: 1586

En el grupo SQL Server Si! de Linkedin, me han hecho una consulta sobre un funcionamiento anormal de los campos Identity de una base de datos SQL Server. La traslado aquí porque es algo que a mi nunca me ha pasado.

En un SQL Server 2012 sp1 las claves primarias definidas como campos identity, en distintas tablas, y de manera aleatoria, cada semana en una, por ejemplo, se saltan 1000 registros de la secuencia.

Como digo es algo que nunca me he encontrado, así que si alguien tiene idea de lo que puede estar ocurriendo en esta base de datos le agradezco que lo comparta.

 

Imagen de carlos
Offline
Joined: 28/12/2005
Puntos: 1586

Desde Twitter, Daniel Trabas (@DaniT20), ha sugerido que podrían ser registros que se eliminen, o transacciones sucias.

Lo de los registros que se eliminen parece demasiado simple, pero tiene mucho sentido, podría haber algún proceso, procedure, aplicación etc. que por alguna razón fuera eliminando esos 1.000 registros, ¿habéis comprobado si os faltan datos o están todos y el hueco está sólo en la numeración?

Yo nunca he visto algo así, pero otra opción que se me ocurre es que por bloqueos o algo así os estén fallando algunas operaciones de insert, pero el contador se incremente igual. ¿Tenéis definidos triggers en las tablas o son todo inserts sin más? Con los triggers podrían pasar cosas de este tipo..

 

Hans (no verificado)

En otros foros ha realizado la misma consulta, y es un problema que trae sqlserver 2012 sp1, se de colocar en el parametro del trace flag 272, (-t272) con ello desaparece el problema

Imagen de carlos
Offline
Joined: 28/12/2005
Puntos: 1586

Gracias Hans, ya tenemos otro misterio de SQL Server resuelto :)

Enlazo uno de los blogs que he encontrado al buscar 'trace flag 272' donde explican cómo utilizar el parámetro, y también otra manera de evitar el problema, gracias a la opción NOCACHE en la creación de la secuencia:http://jamessql.blogspot.com.es/2013/07/gap-issue-in-sql-server-2012-identity.html

 

Lopez (no verificado)

Tengo este problema y no he podido solucionarlo alguien me puede comentar si ya lo pudieron solucionar y como?

 

saludos

 

Giorgio (no verificado)

Esto sucede siempre que se reinicia el computador mientras está funcionando (grabando o leyendo datos) el motor de SQL, y se daña la secuencia de las tablas que estaban en uso. Hasta ahora no he encontrado solución. Me ha tocad siempre que sucede esto, reparar los datos y reinicializar la numeración.

Enviar un comentario nuevo

El contenido de este campo se mantiene como privado y no se muestra públicamente.

Si no estás registrado recuerda que tu comentario entrará en una cola de aprobación.

Más información sobre opciones de formato

Enviando este formulario, acepta la política de privacidad de Mollom.

 



 

  BI   |    CRM     |    CMS    |    Tendencias en software empresarial    |    Cloud computing  |    Software libre    |   Internet    |    Movilidad y apps