none
Sql Server Indices autoincrementales por 1000 RRS feed

  • Pregunta

  • Hola a todos.

    Tengo un Windows server 2012 R2 y en el instalado un SQL Express 2014 (12.0.5000) de repente todos los autoincreméntales de una base de datos aumentan de 1000 en 1000 en lugar de 1 en 1 he repasado todo y aparentemente esta todo bien. En esa base de datos creo una nueva tabla y los incrementales sí que funcionan bien (1 en 1) pero en el resto no.

    Muchas gracias por vuestra ayuda

    martes, 18 de octubre de 2016 18:01

Respuestas

  • Hola Raúl, como estas.

    Efectivamente estas en el caso que menciono Raúl y Enrique mas arriba.

    Si la lógica requerida para el campo de auto-incremento debe ser de uno en uno, podrías probar el Trace Flag o bien implementar otro mecanismo.

    Algunas soluciones de tipo work-around fueron posteadas en el Caso de Connect por este tema:

    https://connect.microsoft.com/SQLServer/feedback/details/739013/failover-or-restart-results-in-reseed-of-identity

    Saludos.

    • Propuesto como respuesta MarianokMVP miércoles, 8 de febrero de 2017 14:10
    • Marcado como respuesta Joyce_ACModerator jueves, 6 de julio de 2017 19:26
    miércoles, 2 de noviembre de 2016 18:21

Todas las respuestas

  • Hola que tal Raul.

    Fijate si puedes ejecutar un SP_HELP sobre la tabla que tienes problemas.

    USE "nombre de la base datos" ; 
    GO 
    EXEC sp_help 'nombre de la tabla'; 
    GO 

    Este comando debería retornar la información de la tabla, incluyendo las columnas que son auto-incrementales y la columna "Increment" debería indicar si esta incrementando de 1 en uno o en 1000.

    Saludos

    Mariano Kovo

    martes, 18 de octubre de 2016 18:20
  • buen dia amigo,

    Fijate esta pagina

    http://www.codeproject.com/Tips/668042/SQL-Server-2012-Auto-Identity-Column-Value-Jump-Is


    Carlos Ignacio Aguero. DBA SQL Server. Toda mi respeto al pueblo Peruano por la ayuda prestada en la guerra de Malvinas.

    martes, 18 de octubre de 2016 18:22
  • Saludos

    Como bien dice el articulo expuesto por Carlos, este comportamiento era una característica de 2012 y puede ser mitigado con la trace flag 272, esto no debería de ser presente en sql server 2014 ni escuche de un evento similar, podrias poner el resultado de un:

    select @@version

    En todo caso ni sequence ni identity garantizan que no existan brincos sino que garantizan un valor ascendente y único.


    • Editado Enrique AA miércoles, 19 de octubre de 2016 0:51
    miércoles, 19 de octubre de 2016 0:50
  • He ejecutado este procedimiento almacenado y este es el resultado que me sale

    EXEC sp_help 'nombre de la tabla'; 

     

     

    dentity               Seed     Increment          Not For Replication

    IDPresupuesto  1            1                                        0

     

    select @@version

     

    Microsoft SQL Server 2014 (SP2) (KB3171021) - 12.0.5000.0 (X64)

                  Jun 17 2016 19:14:09

                  Copyright (c) Microsoft Corporation

                  Express Edition (64-bit) on Windows NT 6.3 <X64> (Build 9600: ) (Hypervisor)

    jueves, 20 de octubre de 2016 10:36
  • Hola Raúl, como estas.

    Efectivamente estas en el caso que menciono Raúl y Enrique mas arriba.

    Si la lógica requerida para el campo de auto-incremento debe ser de uno en uno, podrías probar el Trace Flag o bien implementar otro mecanismo.

    Algunas soluciones de tipo work-around fueron posteadas en el Caso de Connect por este tema:

    https://connect.microsoft.com/SQLServer/feedback/details/739013/failover-or-restart-results-in-reseed-of-identity

    Saludos.

    • Propuesto como respuesta MarianokMVP miércoles, 8 de febrero de 2017 14:10
    • Marcado como respuesta Joyce_ACModerator jueves, 6 de julio de 2017 19:26
    miércoles, 2 de noviembre de 2016 18:21