14

我想为我的c#应用程序中的某些进程应用一些 sql-session 级别设置。

例如,我想将DEADLOCK_PRIORITY一些后台进程设置为LOW.

问题是:

  1. 如果我打开一个新的 sql 连接,是否会启动一个新的 sql-session?

  2. sql-session 会一直持续到连接关闭吗?如果我在SqlConnection打开后立即应用我的设置,它们是否对在相同上下文中执行的所有查询有效SqlConnection

  3. 连接池怎么样?我的SET DEADLOCK_PRIORITY LOW设置是否有可能被系统中的其他进程重用(我不想这样做),因为SqlConnection它实际上并没有关闭(asp.net 连接池决定重用它)。

谢谢!

4

1 回答 1

3

ADO.NETsp_reset_connection在您SqlConnection从池中获取 a 时执行(在关闭它以便它返回到池之后)。根据Sql Server Profiler 中的“exec sp_reset_connection”是什么意思?SET正在重置所有选项。那将包括DEADLOCK_PRIORITY.

我仍然建议您编写一个小型测试程序来确认这一点。ADO.NET 会话池并不完美,例如它ISOLATION LEVEL在关闭时不会重置并且不会回滚事务。

于 2013-05-18T16:18:26.267 回答