Desearía que SQL Server tuviera esta característica. Haría tantas cosas más fáciles.
Así es como he entendido esto.
Crea una tabla llamada tblIdentities. En esta tabla, ponga una fila con sus valores mínimos y máximos y con qué frecuencia debe reiniciarse el número de Secuencia. También ponga el nombre de una nueva tabla (llámelo tblMySeqNum). Hacer esto hace que agregar más generadores de número de secuencia más tarde sea bastante fácil.
tblMySeqNum tiene dos columnas. ID (que es una identidad int) e InsertDate (que es una columna de fecha y hora con un valor predeterminado de GetDate()).
Cuando necesite un nuevo número seq, llame a un sproc que se inserta en esta tabla y use SCOPE_IDENTITY() para crear la identidad. Asegúrese de no haber excedido el máximo en tblIdentities. Si tiene, entonces devuelve un error. Si no, devuelve tu número de secuencia.
Ahora, para reiniciar y limpiar. Tenga un trabajo que se ejecute con la periodicidad necesaria y que verifique todas las tablas enumeradas en tblIdentites (solo una por ahora) para ver si necesitan restablecerse. Si han pulsado el valor o la hora de reinicio, llame a DBCC IDENT RESEED en el nombre de la tabla enumerada en la fila (tblMySeqNum en este ejemplo). Este también es un buen momento para borrar nuestras filas adicionales que realmente no necesita en esa tabla.
NO haga la limpieza o la resiembra en su sproc que obtiene la identidad. Si lo hace, entonces su generador de números de secuencia no se escalará en absoluto.
Como he dicho, sería mucho más fácil que esta característica estuviera en SQL Server, pero he descubierto que este funcionamiento funciona bastante bien.
Vaccano
necesito el equivalente exacto, y el uso de un procedimiento fue la primera idea también. Me preguntaba si había una solución más 'natural' para esto. – Raymond
Aquí no tienes suerte. – Dheer
Parece que SQL Server 2012 introdujo objetos SEQUENCE por http://stackoverflow.com/questions/282943/how-would-you-implement-sequences-in-microsoft-sql-server y http://msdn.microsoft.com/ es-us/library/ff878091.aspx – Loudenvier