Estou no processo de testar e preencher uma tabela específica que aproveita o SEQUENCE
objeto. Nesse processo, estou testando preencher a tabela com dezenas de milhares de linhas de inserção (como não estou familiarizado com como programar isso). O problema que estou vendo com esta tabela específica é que, quando inicio outro teste de população, SEQUENCE
ele não é redefinido para o primeiro número que eu quero (que é 1).
Quando desejo executar novamente um novo teste, excluo a tabela em questão e execute o seguinte:
DROP SEQUENCE foo.fee;
GO
DROP SCHEMA foo;
GO
Quando quero executar novamente o teste, execute os seguintes comandos SCHEMA
& SEQUENCE
, que são disparados na ordem abaixo:
CREATE SCHEMA foo;
GO
CREATE SEQUENCE foo.fee
START WITH 1
INCREMENT BY 1
NO CYCLE
NO CACHE;
GO
Eu então crio a tabela:
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
Uma vez concluído, eu executo o seguinte comando de inserção 50.000 vezes:
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'
)
Agora não há absolutamente nenhum problema com os dados inseridos na tabela. O desafio que encontro é que, quando excluo a tabela, descarto o esquema e a sequência e, em seguida, recriamos a tabela, a sequência e o esquema, que são SEQUENCE
capturados no último número da encarnação anterior do banco de dados e não redefinimos para um.
Por exemplo, se o último número na sequência for dizer 634.534, o próximo número de sequência na nova tabela é 634.535.
Após excluir a tabela e soltar o esquema e a sequência, executei o seguinte para verificar a remoção da sequência e do esquema:
SELECT * FROM INFORMATION_SCHEMA.SCHEMATA
GO
SELECT * FROM sys.sequences
GO
Estou perplexo quanto ao por que isso está acontecendo. Existe outro comando que estou faltando aqui que me ajudaria a localizar o que exatamente está acontecendo aqui?
Devo observar que esta tabela pertence a um banco de dados com 7 outras tabelas, todas executando o SEQUENCE
comando corretamente.
Esta é uma instalação do SQL 2012 SP1 Enterprise Edition.
fonte