none
SQL Server se salto 1000 IDs RRS feed

  • Pregunta

  • Hola a todos, he presentado un grave problema para mi y es que en la interfaz que uso en Visual Studio 2013 para la inserción de datos y sql server 2012 como gestor.

    El asunto es que tengo una tabla llamada Factura, donde un campo es mostrar en la interfaz el id de esa factura autoincrementable como Número único de la factura que se genere; resulta que se me incrementó a 1000 y necesito saber como deshabilitar esa parte y dónde lo hago. Les agradezco de antemano. Gracias


    rammyni

    viernes, 11 de septiembre de 2020 19:04

Respuestas

Todas las respuestas

  • Hola a todos, he presentado un grave problema para mi y es que en la interfaz que uso en Visual Studio 2013 para la inserción de datos y sql server 2012 como gestor.

    El asunto es que tengo una tabla llamada Factura, donde un campo es mostrar en la interfaz el id de esa factura autoincrementable como Número único de la factura que se genere; resulta que se me incrementó a 1000 y necesito saber como deshabilitar esa parte y dónde lo hago. Les agradezco de antemano. Gracias


    rammyni

    Si añadiendo el trace flag 272, pienso que seguiría con la secuencia establecida por sql server y no me podría devolver a la anterior?

    rammyni

    viernes, 11 de septiembre de 2020 19:47
  • Hola Ramiro Castañeda:

    Los identity no aseguran la consecutividad de la numeración.

    Siempre puedes "reparar" a mano esta situación anómala, pero nada te garantiza que no se volverá a repetir cuando se reinicie el servidor, o simplemente cuando una transacción realize un rollback y por tanto te salte un número.

    Puedes utilizar 

    Set Identity Insert

    https://docs.microsoft.com/es-es/sql/t-sql/statements/set-identity-insert-transact-sql?view=sql-server-ver15

    CREATE TABLE dbo.identityEj(  
       ID INT IDENTITY NOT NULL PRIMARY KEY,   
       COL1 VARCHAR(40) NOT NULL  
    );  
    GO  
    INSERT INTO dbo.identityEj
    (COL1)   
    VALUES 
      ('A')  
    , ('B')  
    , ('C')  
    , ('D');  
    GO  

    Borramos la fila de id =3 Col1=C

    DELETE dbo.identityEj  
    WHERE COL1 = 'C';  

    Insertamos un valor en su posición.

    -- SET IDENTITY_INSERT to ON.  
    SET IDENTITY_INSERT dbo.identityEj ON;  
    GO  
    
    INSERT INTO dbo.identityEj (ID, COL1) VALUES (3, 'C');  
    GO  
      
    SET IDENTITY_INSERT dbo.identityEj OFF;
    GO

    Identity Verdades y mentiras

    https://javifer2.wordpress.com/2019/10/27/identity-o-autonumerico-verdades-y-mentiras/

    Id incremental. ¿Cómo?

    https://javifer2.wordpress.com/2019/11/23/id-incremental-como/

    viernes, 11 de septiembre de 2020 22:55