SqlConnection vs Sql Session。 他们的生命一致吗?

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

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

问题是:

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

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

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

谢谢!

从池中获取SqlConnection时,ADO.NET会执行sp_reset_connection (在关闭它之后将其返回到池中)。 根据“exec sp_reset_connection”在Sql Server Profiler中的含义是什么? 正在重置所有SET选项。 这将包括DEADLOCK_PRIORITY

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