可以在两个不同的并发请求上重用SQL Server连接吗?

时间:2015-07-22 15:46:27

标签: asp.net-mvc-4 transactions sql-server-2008-r2 connection-pooling

我们的设置是使用Ninject的ASP.NET MVC,我们每次使用相同的连接字符串在每个请求的基础上实例化和打开一个新连接。基于此MSDN article连接池将重用连接,但我想知道在一个请求上使用的连接是否可以在同一个请求上在同一时间重用。

这个问题的原因是我们有一个查询,我们将ISOLATION LEVEL设置为READ UNCOMMITTED运行查询,然后将其设置回原来的状态。由于设置ISOLATION LEVEL处于连接级别,我们想知道在ISOLATION为READ UNCOMMITTED的时间范围内,其他请求是否可能正在读取“脏”数据。

1 个答案:

答案 0 :(得分:0)

每当将连接放回池中时,都会通过调用 sp_reset_connection 重置连接。不幸的是,它不会影响隔离级别。

这里有关于此行为的投诉: https://connect.microsoft.com/SQLServer/feedback/details/243527/sp-reset-connection-doesnt-reset-isolation-level

如果你必须改变隔离级别,我担心你需要:

  • 在每个查询上明确设置隔离级别

  • 更改隔离级别时使用其他连接字符串(最好禁用池)

  • 将隔离级别更改移至存储过程