我找到的唯一SET参数是SET TRANSACTION ISOLATION LEVEL:
如果您发出SET TRANSACTION ISOLATION 存储过程中的LEVEL或 触发,当对象返回时 控制隔离级别被重置 达到对象时的效果级别 被调用。例如,如果你设置 可重复读一批,和 批处理然后调用存储过程 将隔离级别设置为 SERIALIZABLE,隔离级别 设置恢复为REPEATABLE READ 当存储过程返回时 控制批次。
其他SET参数如SET XACT_ABORT
或SET DEADLOCK_PRIORITY
怎么样?如果您在存储过程(或从C#提交的批处理)中设置它们,它们会在下次使用连接时返回到先前的值吗?
答案 0 :(得分:4)
默认情况下(即,除非在连接字符串中包含“Connection Reset = false”),.NET在重新使用之前会重置与sp_reset_connection
存储过程的连接;除其他外,它撤消自连接打开以来发出的任何SET命令。
有关详细信息,请参阅this article。
答案 1 :(得分:0)
我相信当前会话的其余部分仍然设置了事务隔离级别。这意味着即使在这样的存储过程返回之后,如果客户端cide在同一连接上(在同一会话中)调用另一个存储过程,则第二个proc将在相同的隔离级别下执行。