gpt4 book ai didi

sql - 重置身份种子 ('DBCC CHECKIDENT ... RESEED' 不起作用)

转载 作者:行者123 更新时间:2023-12-05 04:16:10 25 4
gpt4 key购买 nike

对于我的单元测试,我有一个自动化过程,可以逐表构建数据库的副本。我首先运行 SELECT INTO 并添加主键和任何索引。

我用数据复制了一些表,对于那些没有数据的表,我希望重置身份种子。

为了实现这一点,我有以下 T-SQL 语句:

EXEC('TRUNCATE TABLE [' + @TableName + '];')
IF EXISTS (SELECT * FROM sys.identity_columns WHERE object_id = OBJECT_ID(@TableName) AND last_value IS NOT NULL)
BEGIN
EXEC('DBCC CHECKIDENT (' + @TableName + ', reseed, 1)')
END

查询运行时没有报告任何问题,但是当我在设计 View 中检查表时,Identity Seed 值永远不会重置。

谁能告诉我为什么身份种子没有被重置,或者我还需要做什么?

更新:根据一些评论,我已将 sys.identity_columns 修改为以下内容:

IF EXISTS (SELECT * FROM sys.identity_columns WHERE object_id = OBJECT_ID(@TableName))

运行时,返回以下消息:

Checking identity information: current identity value '1'. DBCC execution completed. If DBCC printed error messages, contact your system administrator.

这看起来很有希望。但是,如果我随后刷新表(在对象资源管理器中)并在设计 View 中查看它,身份种子未更改,不是 1(或 0)而是 135。

最佳答案

在分配身份 key 时遇到了类似的问题(在我的例子中分配了一个更大的值)。在我的例子中,我发现如果我在运行 DBCHECKIDENT RESEED 之后运行 DBCC CHECKIDENT (TableName),它将完全“刷新”到新值。否则它将卡在旧值上。我不知道为什么,但它适用于我的情况(并且可能对其他人有用。)

关于sql - 重置身份种子 ('DBCC CHECKIDENT ... RESEED' 不起作用),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28722288/

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