【发布时间】:2012-04-24 09:31:19
【问题描述】:
我有一个脚本,它创建一个完整的数据库并将所有记录插入到几十个表中。 它工作得很好,除非在处理过程中出现一些问题,并且当脚本在插入过程中失败并且可以再次将其设置为 OFF 之前,表格会留下 IDENTITY_INSERT ON。
发生这种情况时,脚本会在尝试再次运行时自动失败,并在我们进入第一个表的插入时出现错误“IDENTITY_INSERT is already ON for table xx”。
作为故障保险,我想确保在设置脚本中运行其余处理之前,将所有表的 IDENTITY_INSERT 设置为 OFF。
作为替代方案,我们或许可以关闭 MS SQL 连接并再次打开它,据我了解,这会清除连接会话的所有 IDENTITY_INSERT 值。
什么是最好的方法来做到这一点,并防止“已经开始”的错误?
【问题讨论】:
-
此应用需要在 2005 及更高版本上运行,因此理想的解决方案适用于所有最近和即将推出的版本。
-
我下面的解决方案应该适用于 05 及更高版本。
标签: sql sql-server