Ich bin dabei, eine bestimmte Tabelle zu testen und zu füllen, die das SEQUENCE
Objekt nutzt . In diesem Prozess teste ich das Auffüllen der Tabelle mit Zehntausenden von Einfügezeilen (da ich mit der Programmierung nicht vertraut bin). Das Problem, das ich bei dieser speziellen Tabelle sehe, ist, dass beim Starten eines weiteren Populationstests der SEQUENCE
Wert nicht auf die erste von mir gewünschte Zahl (1) zurückgesetzt wird.
Wenn ich einen neuen Test wiederholen möchte, lösche ich die betreffende Tabelle und führe dann Folgendes aus:
DROP SEQUENCE foo.fee;
GO
DROP SCHEMA foo;
GO
Wenn ich will wieder führen Sie den Test habe ich die folgenden ausführen SCHEMA
und SEQUENCE
Befehle, die unten in der Reihenfolge gezündet werden:
CREATE SCHEMA foo;
GO
CREATE SEQUENCE foo.fee
START WITH 1
INCREMENT BY 1
NO CYCLE
NO CACHE;
GO
Ich erstelle dann die Tabelle:
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
Sobald dies abgeschlossen ist, führe ich den folgenden Befehl 50.000 Mal aus:
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'
)
Jetzt gibt es absolut kein Problem mit den Daten, die in die Tabelle eingegeben werden. Die Herausforderung, der ich begegne, besteht darin, dass ich beim Löschen der Tabelle das Schema und die Sequenz lösche und dann die Tabelle, Sequenz und das Schema neu erstelle, die SEQUENCE
von der letzten Nummer in der vorherigen Datenbankinkarnation übernommen und nicht auf eins zurückgesetzt wurden.
Wenn die letzte Nummer in der Sequenz beispielsweise 634.534 lautet, lautet die nächste Folgenummer in der neuen Tabelle 634.535.
Nach dem Löschen der Tabelle und Löschen des Schemas und der Sequenz führe ich Folgendes aus, um das Entfernen der Sequenz und des Schemas zu überprüfen:
SELECT * FROM INFORMATION_SCHEMA.SCHEMATA
GO
SELECT * FROM sys.sequences
GO
Ich bin ratlos, warum das passiert. Gibt es einen anderen Befehl, den ich hier vermisse, der mir helfen würde zu lokalisieren, was genau hier vor sich geht?
Ich sollte beachten, dass diese Tabelle zu einer Datenbank mit 7 anderen Tabellen gehört, die alle den SEQUENCE
Befehl korrekt ausführen.
Dies ist eine SQL 2012 SP1 Enterprise Edition-Installation.
quelle