|
7
|
| Sidharth Panwar · 技术社区 · 15 年前 |
|
|
1
2
看看这个 MSDN article
问题是,连接是以可序列化隔离级别打开的;关联的事务已被释放,连接也已被释放,但连接未被破坏并转到连接池。下一次请求连接时(使用相同的连接字符串),返回的正是这个连接,因为查询没有指定任何隔离级别,所以它是在可序列化的隔离级别中执行的。 基本上,如果您有一个连接池,并且在特定的隔离级别(比如Serializable)中打开了一个连接,那么该连接将返回到隔离级别设置为Serializable的池。下一次请求连接时,您无法确定是否不会返回此连接,因此即使默认隔离级别为ReadCommitted,您也可能会得到其中一个“可序列化”连接。 另一个警告是,每次将隔离级别设置为Serializable(或其他类似的设置)时,您可能会选择不同的连接,并且通过将它们的隔离级别设置为Serializable(或您设置的任何设置),您可能会慢慢地污染连接池中越来越多的连接。 我没有找到任何机制来重置正在处理的连接(当它在执行查询后返回连接池时)。一种解决方法是显式重置每个连接的隔离级别。但这很乏味。 因此,最好的选择是为不同的隔离级别创建单独的连接池 |
|
|
2
1
在sp1中选定的表之后添加with(nolock),以确保不能向这些特定表添加读锁。 |
|
|
3
0
|
|
Willy · SQL Server存储过程返回意外值 8 年前 |
|
|
SE1986 · sp\u执行SQL为原始查询提供不同的结果 8 年前 |
|
|
MS204 · 从存储在表中的查询中获取结果到其自己的结果集中? 8 年前 |
|
|
sai bharath · 按数值显示字母数字列顺序 8 年前 |