none
Correlativos de Ids RRS feed

  • Pregunta

  • Hola

    Estoy trabajando con SQL Server Express Edition 2014, los Id que son primary key son identity, pero me he percatado de esto que llegando a cierta numeración se saltan a un número mas grande, muestro imagen

    ¿A que se debe?, no creo haber ingresado tando registros.

    Nota: La base de datos la creo con Entity Framework


    Pedro Ávila
    "El hombre sabio querrá estar siempre con quien sea mejor que él."
    Lima - Perú


    lunes, 8 de agosto de 2016 23:06

Respuestas

  • Hola Pedro 

    Había escuchado el caso de los saltos de 1000 pero no lo he tenido, sino de 1, 2, 5. Algo así. Pero ahora que veo ese hueco exactamente de 1000 me he recordado. Aquí un enlace que muestra la solución desde la versión SQL Server 2012.

    http://jamessql.blogspot.com.co/2013/07/gap-issue-in-sql-server-2012-identity.html

    Saludos,


    Miguel Torres


    lunes, 8 de agosto de 2016 23:49
  • Pedro Ávila,

    Los motivos pueden ser muchos, comportamiento inherente al atributo IDENTITY(), transacciones truncas, reinicio del servicio de SQL Server, operaciones propias de LinQ, etc. Lo que si debes de tener claro es que no debes esperar una secuencia sin gaps en una columna donde defines el atributo IDENTITY(), su objetivo -imagino que es tu caso- es de identificar cada fila de una tabla, ¿es necesario una secuencia sin brechas?, imagino que concluirás en que no.


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    • Marcado como respuesta Pedro Ávila martes, 9 de agosto de 2016 0:50
    lunes, 8 de agosto de 2016 23:59

Todas las respuestas

  • Hola Pedro

    Por la naturaleza de las Columnas de Identidad,  siempre hay riesgo de ocurrencia de saltos por operaciones de inserciones, Borrado y cancelaciones. La forma como se asignan los números consecutivos 

    Aunque un salto de 1000 (parece una eliminación). Pero este salto de 1000 ha sido reportado por muchas personas como una falla de algunas versiones de SQL Server.

    Saludos, 


    Miguel Torres





    lunes, 8 de agosto de 2016 23:35
  • Hola Miguel

    Debe ser pruebas que hice y he borrado, prestare mas atención


    Pedro Ávila
    "El hombre sabio querrá estar siempre con quien sea mejor que él."
    Lima - Perú


    • Editado Pedro Ávila martes, 9 de agosto de 2016 0:02 ......
    lunes, 8 de agosto de 2016 23:39
  • Hola Pedro 

    Había escuchado el caso de los saltos de 1000 pero no lo he tenido, sino de 1, 2, 5. Algo así. Pero ahora que veo ese hueco exactamente de 1000 me he recordado. Aquí un enlace que muestra la solución desde la versión SQL Server 2012.

    http://jamessql.blogspot.com.co/2013/07/gap-issue-in-sql-server-2012-identity.html

    Saludos,


    Miguel Torres


    lunes, 8 de agosto de 2016 23:49
  • Pedro Ávila,

    Los motivos pueden ser muchos, comportamiento inherente al atributo IDENTITY(), transacciones truncas, reinicio del servicio de SQL Server, operaciones propias de LinQ, etc. Lo que si debes de tener claro es que no debes esperar una secuencia sin gaps en una columna donde defines el atributo IDENTITY(), su objetivo -imagino que es tu caso- es de identificar cada fila de una tabla, ¿es necesario una secuencia sin brechas?, imagino que concluirás en que no.


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    • Marcado como respuesta Pedro Ávila martes, 9 de agosto de 2016 0:50
    lunes, 8 de agosto de 2016 23:59
  • Gracias, por responder Miguel Torres C y Willams Morales

    Miguel acabo de hacer la prueba del tutorial y todo normal, he ingresado datos a una tabla y no a ávido problemas.


    Pedro Ávila
    "El hombre sabio querrá estar siempre con quien sea mejor que él."
    Lima - Perú

    martes, 9 de agosto de 2016 0:15
  • Hola Pedro Ávila

    De todas maneras me interesa saber cómo se comporta en el futuro la columna de IDENTIDAD cambiando el Indicador de traza (a eso nunca le he prestado casi atención). Pero quiero saber un poco más sobre ese comportamiento.

    Me comenta.

    Saludos,


    Miguel Torres


    martes, 9 de agosto de 2016 0:40
  • Miguel Torres C

    Te tendré al tanto, de cualquier percance.


    Pedro Ávila
    "El hombre sabio querrá estar siempre con quien sea mejor que él."
    Lima - Perú

    martes, 9 de agosto de 2016 0:49
  • Es un bug de sql aunque no quieran admitirlo,si usas sequence no pasa.

    El identity para hacerlo mas rapido lo que hicieron fue tener en memoria una tabla con los numeros por ejemplo del 1 al 1000,cuando se le acaban usa otos 1000

    Si el sql se reinicia no arranca donde dejo sino que toma el ultimo que tenia (1000) y ahi empieza.

    Se arregla con la traza ya que trajo muchos dolores de cabeza a la gente,gap puede haber pero no de tantos numeros.

    martes, 9 de agosto de 2016 23:47