在生产sql server中打开Identity_Insert是否有任何缺点

时间:2012-02-25 20:05:34

标签: sql sql-server unit-testing identity-insert

我进行单元测试将数据记录添加/插入到列名为Id的表中,该表是标识列。

在单元测试中,我手动插入id。所以我可以在Insert语句之前将Identiy_Insert设置为ON。

为生产服务器启用此功能是否有任何缺点?

或者我应该更改单元测试方法?为“名称”字段插入值并检索

和ASSERT它应该足够证明已经为集成插入了数据记录

缘故。

2 个答案:

答案 0 :(得分:2)

它不是一个可以保持开启的功能。每个连接都有效。

试一试,在SSMS上打开连接并将其设置为ON到一个表。 然后打开另一个连接,您将看到如果您尝试在同一个表上插入IDENTITY,它将失败。

答案 1 :(得分:0)

来自MSDN:

  

任何时候,会话中只有一个表可以将IDENTITY_INSERT属性设置为ON。如果某个表已将此属性设置为ON,并且为另一个表发出了SET IDENTITY_INSERT ON语句,则SQL Server将返回一条错误消息,指出SET IDENTITY_INSERT已经为ON并报告其设置为ON的表。

通常,我不建议在生产中使用IDENTITY_INSERT来避免并发问题。 至于单元测试,我建议创建一个模拟的数据访问层,而不是依赖于真实的数据库。