Estoy en el proceso de probar y completar una tabla específica que aprovecha el SEQUENCE
objeto. En este proceso, estoy probando llenar la tabla con decenas de miles de líneas de inserción (ya que no estoy familiarizado con cómo programar esto). El problema que estoy viendo con esta tabla específica es que cuando comienzo otra prueba de población, SEQUENCE
no se restablece al primer número que quiero (que es 1).
Cuando deseo volver a ejecutar una nueva prueba, elimino la tabla en cuestión y luego ejecuto lo siguiente:
DROP SEQUENCE foo.fee;
GO
DROP SCHEMA foo;
GO
Cuando quiero volver a ejecutar la prueba de que ejecute el siguiente SCHEMA
y SEQUENCE
comandos, que se disparan en el orden siguiente:
CREATE SCHEMA foo;
GO
CREATE SEQUENCE foo.fee
START WITH 1
INCREMENT BY 1
NO CYCLE
NO CACHE;
GO
Luego creo la tabla:
CREATE TABLE foo.sample_table_with_data
(order_number bigint PRIMARY KEY NOT NULL,
sample_column_one nvarchar(max) NULL,
sample_column_two nvarchar(max) NULL,
sample_column_three nvarchar(max) NULL)
GO
Una vez que se completa, ejecuto el siguiente comando de inserción 50,000 veces:
INSERT INTO [foo].[sample_table_with_data]
(
[order_number],
[sample_column_one],
[sample_column_two],
[sample_column_three]
)
VALUES
(
NEXT VALUE FOR foo.fee,
'Blah',
'Blah Blah',
'Blah Blah Blah'
)
Ahora no hay absolutamente ningún problema con la entrada de datos en la tabla. El desafío con el que me encuentro es que cuando elimino la tabla, suelto el esquema y la secuencia, luego vuelvo a crear la tabla, la secuencia y el esquema que SEQUENCE
recoge del último número en la encarnación de la base de datos anterior y no se restablece a uno.
Por ejemplo, si el último número de la secuencia es, digamos, 634,534, el siguiente número de secuencia en la nueva tabla es 634,535.
Después de eliminar la tabla y soltar el esquema y la secuencia, ejecuto lo siguiente para verificar la eliminación de la secuencia y el esquema:
SELECT * FROM INFORMATION_SCHEMA.SCHEMATA
GO
SELECT * FROM sys.sequences
GO
Estoy perplejo de por qué esto está sucediendo. ¿Hay otro comando que me estoy perdiendo aquí que me ayudaría a localizar exactamente qué está pasando aquí?
Debo señalar que esta tabla pertenece a una base de datos con otras 7 tablas que ejecutan el SEQUENCE
comando correctamente.
Esta es una instalación de SQL 2012 SP1 Enterprise Edition.
fuente