Sto testando e popolando una tabella specifica che sfrutta l' SEQUENCE
oggetto. In questo processo sto testando il popolamento della tabella con decine di migliaia di righe di inserimento (poiché non ho familiarità con come programmare questo). Il problema che sto vedendo con questa tabella specifica è che quando avvio un altro test di popolazione, SEQUENCE
non viene ripristinato il primo numero desiderato (che è 1).
Quando desidero rieseguire un nuovo test, elimino la tabella in questione, quindi eseguo quanto segue:
DROP SEQUENCE foo.fee;
GO
DROP SCHEMA foo;
GO
Quando voglio rieseguire il test, eseguo i seguenti comandi SCHEMA
e SEQUENCE
, che vengono attivati nell'ordine seguente:
CREATE SCHEMA foo;
GO
CREATE SEQUENCE foo.fee
START WITH 1
INCREMENT BY 1
NO CYCLE
NO CACHE;
GO
Quindi creo la tabella:
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 volta completato, eseguo il seguente comando di inserimento 50.000 volte:
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'
)
Ora non c'è assolutamente alcun problema con l'inserimento dei dati nella tabella. La sfida che sto incontrando è che quando elimino la tabella, rilasciare lo schema e la sequenza, quindi ricreare la tabella, la sequenza e lo schema ripresi SEQUENCE
dall'ultimo numero nell'incarnazione del database precedente e non reimpostarli su uno.
Ad esempio, se l'ultimo numero della sequenza è 634.534, il numero di sequenza successivo nella nuova tabella è 634.535.
Dopo aver eliminato la tabella e rilasciato lo schema e la sequenza, eseguo quanto segue per verificare la rimozione della sequenza e dello schema:
SELECT * FROM INFORMATION_SCHEMA.SCHEMATA
GO
SELECT * FROM sys.sequences
GO
Sono sconcertato sul perché questo stia accadendo. C'è un altro comando che mi manca qui che mi aiuterebbe a localizzare esattamente cosa sta succedendo qui?
Devo notare che questa tabella appartiene a un database con altre 7 tabelle che eseguono SEQUENCE
correttamente il comando.
Questa è un'installazione di SQL 2012 SP1 Enterprise Edition.