我正在测试和填充利用该SEQUENCE
对象的特定表。在这个过程中,我正在测试用数万条插入行填充表格(因为我不熟悉如何编程)。我在这个特定表中看到的问题是,当我开始另一个人口测试时,SEQUENCE
不会重置回我想要的第一个数字(即 1)。
当我希望重新运行新测试时,我删除有问题的表,然后运行以下命令:
DROP SEQUENCE foo.fee;
GO
DROP SCHEMA foo;
GO
当我想重新运行测试时,我运行以下SCHEMA
&SEQUENCE
命令,这些命令按以下顺序触发:
CREATE SCHEMA foo;
GO
CREATE SEQUENCE foo.fee
START WITH 1
INCREMENT BY 1
NO CYCLE
NO CACHE;
GO
然后我创建表:
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
完成后,我运行以下插入命令 50,000 次:
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'
)
现在数据进入表格是绝对没有问题的。我遇到的挑战是,当我删除表时,删除模式和序列,然后重新创建表、序列和模式,SEQUENCE
从前一个数据库化身中的最后一个数字中提取,而不是重置回一个。
例如,如果序列中的最后一个数字是 634,534,则新表中的下一个序列号是 634,535。
删除表并删除模式和序列后,我运行以下命令来验证序列和模式的删除:
SELECT * FROM INFORMATION_SCHEMA.SCHEMATA
GO
SELECT * FROM sys.sequences
GO
我很困惑为什么会这样。是否有另一个我在这里遗漏的命令可以帮助我本地化这里到底发生了什么?
我应该注意,该表属于一个数据库,其中有 7 个其他表都SEQUENCE
正确运行了该命令。
这是 SQL 2012 SP1 企业版安装。
尝试
或者:
http://msdn.microsoft.com/en-us/library/ff878572.aspx
使用您的脚本稍作改动:
...我无法在 SQL Server 2012 SP1(内部版本 3000)或更高版本上重现该问题。
我也找不到提及此特定场景的 Connect 项目或知识库文章(并且还有很多其他
SEQUENCE
问题)。这并不是说它在 SP1 之前不存在,因为并非所有修复最终都被记录在案。