Estou no processo de teste e preenchimento de uma tabela específica que aproveita o SEQUENCE
objeto. Neste processo, estou testando o preenchimento da tabela com dezenas de milhares de linhas de inserção (já que não estou familiarizado com como programar isso). O problema que estou vendo com essa tabela específica é que quando inicio outro teste de população, o SEQUENCE
valor não volta para o primeiro número que eu quero (que é 1).
Quando desejo reexecutar um novo teste, excluo a tabela em questão e executo o seguinte:
DROP SEQUENCE foo.fee;
GO
DROP SCHEMA foo;
GO
Quando quero executar novamente o teste, executo os seguintes comandos SCHEMA
& SEQUENCE
, que são acionados 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, 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 entrando na tabela. O desafio que estou encontrando é que, quando eu excluo a tabela, elimino o esquema e a sequência e, em seguida, recrio a tabela, a sequência e o esquema a SEQUENCE
partir do último número na encarnação anterior do banco de dados e não redefinir para um.
Por exemplo, se o último número na sequência for 634.534, o próximo número de sequência na nova tabela será 634.535.
Depois de excluir a tabela e descartar o esquema e a sequência, executo 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 por que isso está acontecendo. Existe outro comando que estou perdendo aqui que me ajudaria a localizar exatamente o que 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.
Tentar
Ou:
http://msdn.microsoft.com/en-us/library/ff878572.aspx
Usando seu script com algumas pequenas alterações:
...Não consigo reproduzir o problema no SQL Server 2012 SP1 (build 3000) ou superior.
Também não consigo encontrar um item do Connect ou um artigo da KB mencionando esse cenário específico (e houve muitos outros
SEQUENCE
problemas). Isso não quer dizer que não existia antes do SP1 porque nem todas as correções acabam sendo documentadas.