0

我正在编写一个基于 Web 的导入器,以将数据从一个数据库导入另一个数据库。由于数据被加载到具有标识的表中,因此我需要在执行插入语句之前启用 Identity_Inserts。我生成了需要运行到列表中的 SQL 语句,我想做的是在循环执行命令之前将 IDENTITY_INSERT 设置为 ON,然后在完成后将其设置为后退。我将一次执行每个命令,因为我想跟踪哪些命令失败。

我尝试在开始循环之前执行 SET IDENTITY_INSERT [TABLE NAME] ON ,但这不起作用。

我怎样才能完成我想做的事情,或者有人有其他想法吗?

4

2 回答 2

0

执行选项需要提升权限SET IDENTITY_INSERT,检查您的用户是否满足以下条件之一:
用户必须拥有该对象,或者是sysadmin固定服务器角色的成员,或者是db_owner固定db_ddladmin数据库角色的成员。

于 2012-02-09T23:54:47.167 回答
0

取自https://connect.microsoft.com/SQLServer/feedback/details/517923/set-identity-insert-already-on-error-message-always-returns-dbo-schema-name

SQL 2k8 BOL 声明“在任何时候,会话中只有一个表可以将 IDENTITY_INSERT 属性设置为 ON。如果一个表已经将此属性设置为 ON,并且为另一个表发出了 SET IDENTITY_INSERT ON 语句,SQL Server 将返回一条错误消息指出 SET IDENTITY_INSERT 已经打开并报告它设置为 ON 的表。”

所以我想,您需要在循环结束时将其设置为关闭?

于 2012-03-22T08:50:50.413 回答