我的桌子上跳了几千个。我已经弄清楚了原因,我想说晚了,这是服务器频繁故障并重新启动并执行的原因
set identity cache=off
。
希望这些大的跳跃不会发生。现在,我想在新条目的空白处重复使用这些数字,最好的方法是什么?改变种子值是可能的吗?请注意,我无法更改任何现有数据。 另外,请注意添加新条目的速度很慢(每天少于10个条目),我可以随时关注该数据库,并在必要时手动更改种子值。
非常感谢您。
答案 0 :(得分:1)
您可以在脚本的开头和结尾使用SET IDENTITY INSERT table_name ON
和SET IDENTITY INSERT table_name OFF
为每个实例编写脚本。完整文档为here。您一次只能在一张桌子上使用它。
更改种子将无效,因为将始终使用下一个最大值。
以下脚本将有助于识别差距。
SELECT TOP 1
id + 1
FROM mytable mo
WHERE NOT EXISTS
(
SELECT NULL
FROM mytable mi
WHERE mi.id = mo.id + 1
)
ORDER BY
id
来自question/answer的那个
更新
一种可能的策略是使数据库脱机,使用SET IDENTITY INSERT
用所需的ID填充空白/跳转,否则使用最小/空数据填充,然后重新启用。然后使用空记录,直到所有记录都用完,然后恢复到以前的方法。
答案 1 :(得分:0)
我认为这些数字对用户而言并不重要。但您可以考虑一次进行批量操作来修复它们。不要试图在它们之间插入
在表级别的和上设置身份插入会更改表的结构,因此不安全。
您需要编写TSQL脚本以同时更改基表和从属表