根据http://msdn.microsoft.com/en-nz/library/ms173763.aspx的评论部分:
一次只能设置一个隔离级别选项,并且在显式更改之前,它将保持为该连接设置。
并根据http://msdn.microsoft.com/en-us/library/8xx3tyca(v=vs.110).aspx
为了最大限度地降低打开连接的成本,ADO.NET使用称为连接池的优化技术。
这是否意味着如果在存储过程中更改了ISOLATION LEVEL
,那么下次使用连接时会将其转移给其他人? E.g。
var con1 = new SqlConnection("<THE CONNECTION STRING>");
// ...call stored procedure altering isolation level with:
// SET TRANSACTION ISOLATION LEVEL SNAPSHOT
con1.Close();
var con2 = new SqlConnection("<THE CONNECTION STRING>");
// ... will this connection potentially have the altered isolation level?
编辑:有没有一种简单的方法来检查查询中使用的隔离级别?
答案 0 :(得分:1)
到A部分......
NO。
来自docs ...
如果您在存储过程中发出SET TRANSACTION ISOLATION LEVEL或 触发器,当对象返回控制时,隔离级别被重置 到调用对象时生效的级别。例如,如果 你批量设置REPEATABLE READ,然后批处理调用存储 将隔离级别设置为SERIALIZABLE,隔离的过程 级别设置在存储过程时恢复为REPEATABLE READ 将控制权返回给batc