Je suis en train de tester et de remplir une table spécifique qui exploite l' SEQUENCE
objet. Dans ce processus, je teste le remplissage de la table avec des dizaines de milliers de lignes d'insertion (car je ne suis pas familier avec la façon de programmer cela). Le problème que je vois avec ce tableau spécifique est que lorsque je démarre un autre test de population, le SEQUENCE
ne revient pas au premier nombre souhaité (qui est 1).
Lorsque je souhaite relancer un nouveau test, je supprime la table en question, puis exécute ce qui suit:
DROP SEQUENCE foo.fee;
GO
DROP SCHEMA foo;
GO
Lorsque je veux relancer le test, j'exécute les commandes SCHEMA
& suivantes SEQUENCE
, qui sont déclenchées dans l'ordre ci-dessous:
CREATE SCHEMA foo;
GO
CREATE SEQUENCE foo.fee
START WITH 1
INCREMENT BY 1
NO CYCLE
NO CACHE;
GO
Je crée ensuite la table:
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
Une fois cela terminé, j'exécute la commande d'insertion suivante 50 000 fois:
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'
)
Maintenant, il n'y a absolument aucun problème avec les données entrant dans la table. Le défi que je rencontre est que lorsque je supprime la table, je supprime le schéma et la séquence, puis je recrée la table, la séquence et le schéma SEQUENCE
récupérés à partir du dernier numéro de la précédente incarnation de la base de données et non réinitialisé à un.
Par exemple, si le dernier numéro de la séquence est disons 634 534, le numéro de séquence suivant dans la nouvelle table est 634 535.
Après avoir supprimé la table et abandonné le schéma et la séquence, j'exécute ce qui suit pour vérifier la suppression de la séquence et du schéma:
SELECT * FROM INFORMATION_SCHEMA.SCHEMATA
GO
SELECT * FROM sys.sequences
GO
Je suis perplexe quant à la raison pour laquelle cela se produit. Y a-t-il une autre commande qui me manque ici qui pourrait m'aider à localiser exactement ce qui se passe ici?
Je dois noter que cette table appartient à une base de données avec 7 autres tables exécutant toutes la SEQUENCE
commande correctement.
Il s'agit d'une installation de SQL 2012 SP1 Enterprise Edition.