一次插入 100,000 行..错误标识列违规

发布于 2024-08-24 16:25:45 字数 339 浏览 3 评论 0原文

我正在尝试在大约 100k 条记录的表中逐行插入。大约 140 条记录后我收到此错误。

违反主键约束 'PK_表1'。无法插入重复项 键入对象“table1”。声明 已终止。

在这种情况下,主键是 IDENTITY 列。我没有将该列包含在我的 INSERT 语句中。

我运行了 DBCC CHECKIDENT (table1,noreseed)

当前标识值和当前列值不相同。

如果我在 5 分钟内运行相同的命令,它们就会变得相同。

我不知道问题出在哪里。非常感谢任何帮助。

I'm trying to insert row by row in a table about 100k records.. I get this error after some 140 or so..

Violation of PRIMARY KEY constraint
'PK_table1'. Cannot insert duplicate
key in object 'table1'. The statement
has been terminated.

In this case the primary key is an IDENTITY column. I do not include that column in my INSERT statements.

I ran DBCC CHECKIDENT (table1,noreseed)

The current identity value and the current column value are NOT the same.

If I run the same command in 5 min, they become the same.

I cannot figure out what the problem is. Any help is greatly appreciated.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

稀香 2024-08-31 16:25:45

如果目标表不为空,那么您需要将标识列重新设定为下一个最高的现有值,如下所示:

Declare @Max bigint
Set @Max = ( Select Max(IdCol) From TableA ) + 1
DBCC CHECKIDENT( TableA, RESEED, @Max )

If the destination table is not empty then you want to reseed the identity column to the next highest existing value like so:

Declare @Max bigint
Set @Max = ( Select Max(IdCol) From TableA ) + 1
DBCC CHECKIDENT( TableA, RESEED, @Max )
涫野音 2024-08-31 16:25:45

您可以使用 bcp 命令来完成此工作。您可以指定是否检查身份。

You can use bcp command for this work. You can specify that identity being checked or not.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文