SEQUENCE
Nesneyi kullanan belirli bir tabloyu test etme ve doldurma sürecindeyim . Bu süreçte, tabloyu on binlerce ekleme satırı ile doldurmayı test ediyorum (bunu nasıl programlayacağımı bilmiyorum). Bu özel tablo ile gördüğüm sorun, başka bir nüfus testi başlattığınızda SEQUENCE
, ilk istediğim numaraya (ki 1) sıfırlamıyor olmasıdır.
Yeni bir testi yeniden çalıştırmak istediğimde söz konusu tabloyu silip aşağıdakileri çalıştırıyorum:
DROP SEQUENCE foo.fee;
GO
DROP SCHEMA foo;
GO
Ben istediğinizde aşağıdaki çalıştırmak testi yeniden çalıştırın SCHEMA
& SEQUENCE
siparişinin altında pişirilir komutları:
CREATE SCHEMA foo;
GO
CREATE SEQUENCE foo.fee
START WITH 1
INCREMENT BY 1
NO CYCLE
NO CACHE;
GO
Sonra tablo oluşturmak:
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
Bu tamamlandıktan sonra aşağıdaki ekleme komutunu 50.000 kez çalıştırıyorum:
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'
)
Şimdi tabloya giren verilerde kesinlikle bir sorun yok. Karşılaştığım zorluk, tabloyu sildiğimde, şemayı ve diziyi bıraktıktan sonra tabloyu, diziyi ve şemayı yeniden oluşturmak SEQUENCE
, önceki veritabanı enkarnasyonundaki son sayıdan seçip bire sıfırlamaması.
Örneğin, dizideki son sayı 634,534 ise, yeni tablodaki bir sonraki dizi numarası 634,535'tir.
Tabloyu sildikten ve şema ve diziyi bıraktıktan sonra, dizinin ve şemanın kaldırıldığını doğrulamak için aşağıdakileri çalıştırıyorum:
SELECT * FROM INFORMATION_SCHEMA.SCHEMATA
GO
SELECT * FROM sys.sequences
GO
Bunun neden gerçekleştiğine şaşırıyorum. Burada eksik olan başka bir komut var mı?
Bu tablo tüm SEQUENCE
komutu doğru çalışan 7 tablo ile bir veritabanına ait olduğunu not etmeliyim .
Bu bir SQL 2012 SP1 Enterprise Edition yüklemesidir.