Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Campo autonumérico no correlativo

Estas en el tema de Campo autonumérico no correlativo en el foro de SQL Server en Foros del Web. Buenos días, Tengo un problema bastante raro que me esta empezando a dar dolor de cabeza y no se muy bien por que puede ocurrir. ...
  #1 (permalink)  
Antiguo 11/11/2011, 03:33
 
Fecha de Ingreso: febrero-2011
Mensajes: 5
Antigüedad: 13 años, 9 meses
Puntos: 0
Busqueda Campo autonumérico no correlativo

Buenos días,

Tengo un problema bastante raro que me esta empezando a dar dolor de cabeza y no se muy bien por que puede ocurrir.

Veréis tengo una tabla en la que se guardan ciertos mensajes de traza y el campo clave de esta tabla es un campo autonumérico. El problema es que el campo autonumérico no sigue un orden correlativo.

Por ejemplo acabo de truncar la tabla para que el contador empiece desde 0 y he forzado la insercción de una fila en la tabla, he comprobado y el autonumércio tenía el valor 5, pasado un rato he vuelto a insertar una fila y este ya llegaba por el 142.

¿Alguien conoce un caso similar? Lo único que se ocurre es que haya algún procedimiento que este insertando y eliminando filas de esa tabla y de ahí que ocurra esto, ya que el número siempre va en aumento y nunca disminuye, pero tampoco se como comprobar las transacciones que se estan produciendo en esa tabla, porque con profiler lo veo un tanto engorroso.

Si alguien me puede ayudar...

Gracias.
  #2 (permalink)  
Antiguo 11/11/2011, 15:44
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 17 años, 4 meses
Puntos: 180
Respuesta: Campo autonumérico no correlativo

TODOS los INSERT que sean "fallidos", tambien los cuenta el IDENTITY.
__________________
MCTS Isaias Islas
  #3 (permalink)  
Antiguo 11/11/2011, 22:22
Avatar de matanga  
Fecha de Ingreso: octubre-2007
Ubicación: España
Mensajes: 1.091
Antigüedad: 17 años
Puntos: 85
Respuesta: Campo autonumérico no correlativo

Me queda la duda, ¿buscas una forma de crear números correlativos para la clave o solo quieres saber porque no se guardan números correlativos en un identity?.

Si es lo primero, no existe en SQL Server una herramienta built-in que garantice números correlativos, lo tienes que resolver a nivel de aplicación, pero ten en mente que esto no es una propiedad de las claves primarias, por lo que no tiene mucho sentido hacerlo.

Si es lo segundo, los saltos se producen porque, como bien dice iislas, un identity incrementa su valor aunque se haga un rollback del insert, o porque se borran registros de la tabla generando diferencia entre el valor máximo de la clave y el valor actual del identity.

Cita:
Lo único que se ocurre es que haya algún procedimiento que este insertando y eliminando filas de esa tabla y de ahí que ocurra esto, ya que el número siempre va en aumento y nunca disminuye, pero tampoco se como comprobar las transacciones que se estan produciendo en esa tabla, porque con profiler lo veo un tanto engorroso.
La columna identity solo hace incrementos, que se puede definir como negativo o positivo, no ambos. Por otro lado, para ver las transacciones sobre la tabla fuera del Profiler puedes consultar las vistas de administración sys.dm_tran_*, más info en http://msdn.microsoft.com/en-us/library/ms178621.aspx.

Saludos
  #4 (permalink)  
Antiguo 15/11/2011, 04:59
 
Fecha de Ingreso: febrero-2011
Mensajes: 5
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: Campo autonumérico no correlativo

Muchas gracias por sus respuestas.

Lo que quiero saber es porque no se guardan números correlativos en el identity.

He estado revisando los enlaces que me ha pasado matanga y no he visto que hubiese nada raro. Lo gracioso es que me he restaurado toda la base de datos y el sistema que trabaja sobre ella en otro servidor e incomprensiblemente el campo del autonumérico no hace extraños y sigue correlativo.

Ahora si que me he perdido...

Etiquetas: autonumérico, correlativo, procedimiento, tabla, campos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:41.