gpt4 book ai didi

sql-server-2012 - 还原后的 SQL Server 2012 标识列

转载 作者:行者123 更新时间:2023-12-02 03:33:44 25 4
gpt4 key购买 nike

我只是在我的 SQL Server 2012 上做一些测试来练习备份和恢复。

我创建了一个包含几列的简单表格,其中一个是 ID (int) 标记为 identity 列。

我添加了 3 条记录,ID 自动设置为 1 然后 2 然后 3... ok

我备份了数据库,然后进行了完全恢复。

恢复后,我尝试添加一条新记录,但奇怪的是,新 ID 是 1003(而不是 4),再次添加一条新记录时,ID 是 1004(好吧,它又比前一个增加了)。

于是我再次尝试备份数据库,然后恢复它。

尝试添加一条新记录并猜测...新 ID 是 2004(而不是 1005),然后是 2005、2006 之后的记录等等。

似乎在每次恢复之后,身份列都以某种方式搞砸了。

这是正常行为吗?

最佳答案

是的,这是正常行为。

IDENTITY 将保留一定大小的值 block 并缓存这些值。如果您的服务器出现故障,或者您进行了备份/恢复,则该保留 block 中尚未使用的缓存值将丢失并且不会恢复。

不是问题! IDENTITY 系统只是确保它为您提供正确的升序值 - 它从不保证“没有差距” - 差距不是问题,真的!

请参阅 Aaron Bertrand 的博文 Bad Habits To Kick: Making Assumptions about IDENTITY更深入地了解 IDENTITY 以及 IDENTITY

中应该排除的内容(以及 需要的内容)

关于sql-server-2012 - 还原后的 SQL Server 2012 标识列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25056055/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com