Saya sedang dalam proses menguji dan mengisi tabel tertentu yang memanfaatkan SEQUENCE
objek. Dalam proses ini saya sedang menguji mengisi tabel dengan puluhan ribu garis insert (karena saya tidak terbiasa dengan cara memprogram ini). Masalah yang saya lihat dengan tabel khusus ini adalah ketika saya memulai tes populasi lain, angka SEQUENCE
tersebut tidak direset kembali ke angka pertama yang saya inginkan (yaitu 1).
Ketika saya ingin menjalankan kembali pengujian baru saya menghapus tabel yang dimaksud kemudian jalankan yang berikut:
DROP SEQUENCE foo.fee;
GO
DROP SCHEMA foo;
GO
Ketika saya ingin menjalankan kembali tes, saya menjalankan perintah SCHEMA
& berikut SEQUENCE
ini, yang dijalankan dalam urutan di bawah ini:
CREATE SCHEMA foo;
GO
CREATE SEQUENCE foo.fee
START WITH 1
INCREMENT BY 1
NO CYCLE
NO CACHE;
GO
Saya kemudian membuat tabel:
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
Setelah selesai saya menjalankan perintah sisipkan 50.000 kali:
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'
)
Sekarang sama sekali tidak ada masalah dengan data yang masuk ke dalam tabel. Tantangan yang saya temui adalah ketika saya menghapus tabel, jatuhkan skema dan urutan kemudian buat kembali tabel, urutan, dan skema pengambilan SEQUENCE
dari nomor terakhir dalam inkarnasi database sebelumnya dan tidak diatur ulang ke satu.
Misalnya, jika nomor terakhir dalam urutan adalah mengatakan 634.534 nomor urutan berikutnya dalam tabel baru adalah 634.535.
Setelah menghapus tabel dan menjatuhkan skema dan urutan, saya menjalankan yang berikut untuk memverifikasi penghapusan urutan dan skema:
SELECT * FROM INFORMATION_SCHEMA.SCHEMATA
GO
SELECT * FROM sys.sequences
GO
Saya bingung mengapa ini terjadi. Apakah ada perintah lain yang saya lewatkan di sini yang akan membantu saya melokalisasi apa yang sebenarnya terjadi di sini?
Saya harus mencatat bahwa tabel ini milik database dengan 7 tabel lainnya semua menjalankan SEQUENCE
perintah dengan benar.
Ini adalah instalasi SQL 2012 SP1 Enterprise Edition.