是否可以使用池化.NET连接重置T-Sql SET参数?

时间:2009-01-05 21:43:27

标签: c# .net sql-server

我找到的唯一SET参数是SET TRANSACTION ISOLATION LEVEL:

  

如果您发出SET TRANSACTION ISOLATION   存储过程中的LEVEL或   触发,当对象返回时   控制隔离级别被重置   达到对象时的效果级别   被调用。例如,如果你设置   可重复读一批,和   批处理然后调用存储过程   将隔离级别设置为   SERIALIZABLE,隔离级别   设置恢复为REPEATABLE READ   当存储过程返回时   控制批次。

其他SET参数如SET XACT_ABORTSET DEADLOCK_PRIORITY怎么样?如果您在存储过程(或从C#提交的批处理)中设置它们,它们会在下次使用连接时返回到先前的值吗?

2 个答案:

答案 0 :(得分:4)

默认情况下(即,除非在连接字符串中包含“Connection Reset = false”),.NET在重新使用之前会重置与sp_reset_connection存储过程的连接;除其他外,它撤消自连接打开以来发出的任何SET命令。

有关详细信息,请参阅this article

答案 1 :(得分:0)

我相信当前会话的其余部分仍然设置了事务隔离级别。这意味着即使在这样的存储过程返回之后,如果客户端cide在同一连接上(在同一会话中)调用另一个存储过程,则第二个proc将在相同的隔离级别下执行。