1

在我从 SQL 脚本插入 140 万行数据的永恒 传奇中,我编写了一个基本的 WinForms 应用程序,它获取脚本的每一行并单独执行它。

但是,由于原始脚本包含

SET IDENTITY_INSERT [Table] OFF

并且 SET 是一个会话范围的命令,这个设置在每次 SQL 调用时都会丢失,这意味着每一行都失败了。有没有办法在整个数据库范围内为整个表设置 IDENTITY_INSERT 以便我可以在不失败的情况下进行这些单独的调用?或者我可以通过在每一行附加一个命令来告诉它忽略身份规范?

4

3 回答 3

5

批量插入对您不起作用?还是 SQL Server 导入/导出向导(此处此处)?我知道导入/导出可以关闭整个导入的身份插入。我有理由确定您可以在 BULK INSERT 之前做到这一点

于 2008-10-23T16:30:10.397 回答
0

我相信 IDENTITY INSERT 一次只能覆盖一个表,每个会话。

您可能必须一次批处理 2 或 300 个插入语句,并在每个批处理之前使用 ident 插入。

所以应用程序将执行这样的块......

SET IDENTITY_INSERT [Table] OFF;
INSERT INTO TABLE VALUES (1, 'a');
INSERT INTO TABLE VALUES (2, 'b');
INSERT INTO TABLE VALUES (3, 'c');
INSERT INTO TABLE VALUES (4, 'd');
INSERT INTO TABLE VALUES (5, 'e');
SET IDENTITY_INSERT [Table] ON;
于 2008-10-23T16:46:38.147 回答
0

在进行 140 万个插入作业时,是否还有其他内容要访问/插入到表中。

如果没有,您可以在工作期间简单地禁用 PK 列上的身份?

于 2008-10-23T17:47:28.103 回答