我正在编写一个基于Web的导入程序,用于将数据从一个数据库导入另一个数据库。由于数据被加载到具有标识的表中,我需要在执行insert语句之前启用Identity_Inserts。我生成我需要运行到List中的SQL语句,我想要做的是在循环执行命令之前将IDENTITY_INSERT设置为ON,然后在完成后将其设置为后退。我将一次执行一个命令,因为我想跟踪哪些命令失败。
我在开始循环之前尝试执行SET IDENTITY_INSERT [TABLE NAME],但这不起作用。
我如何完成我想要做的事情,或者有没有其他任何想法?
答案 0 :(得分:0)
执行SET IDENTITY_INSERT
选项需要提升权限,请检查您的用户是否满足其中一项:
用户必须拥有该对象,或者是sysadmin
固定服务器角色或db_owner
和db_ddladmin
固定数据库角色的成员。
答案 1 :(得分:0)
SQL 2k8 BOL声明“在任何时候,会话中只有一个表可以将IDENTITY_INSERT属性设置为ON。如果表已将此属性设置为ON,并且为另一个表发出了SET IDENTITY_INSERT ON语句, SQL Server返回一条错误消息,指出SET IDENTITY_INSERT已经打开并报告它设置为ON的表。“
所以我想,你需要在循环结束时将其设置为OFF吗?