从ASP.Net设置IDENTITY_INSERT

时间:2012-02-09 23:33:45

标签: asp.net sql-server transactions identity-column

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

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

我如何完成我想要做的事情,或者有没有其他任何想法?

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分: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的表。“

所以我想,你需要在循环结束时将其设置为OFF吗?