回答

收藏

SqlConnection与Sql Session。他们的一生重合吗?

技术问答 技术问答 220 人阅读 | 0 人回复 | 2023-09-13

我想为我的c#应用程序中的某些进程应用一些sql会话级别的设置。
6 Y9 a* e9 v- d% p例如,我想将DEADLOCK_PRIORITY一些后台进程设置为LOW。5 e1 B+ ]8 W: \! n# c& u
问题是:( g( n4 q) Q6 _1 h
[ol], b9 X4 g" E1 a9 D2 v; w8 X4 b. Y5 K
如果我打开一个新的sql连接,是否会启动一个新的sql会话?
4 U( C3 D" ?2 t" X& z
6 G$ z+ ^  ^* Y9 |1 o在关闭连接之前,sql-session会一直存在吗?如果我在SqlConnection开启后立即应用设置,这些设置对于在相同上下文中执行的所有查询是否有效SqlConnection?0 [9 Z) B  V+ D; U) `
+ s9 w' l& ^9 o9 f9 \
连接池 呢?因为我的SET DEADLOCK_PRIORITY LOW设置SqlConnection实际上没有关闭( asp.net连接池 决定重用它),这是否有可能被我系统中的其他进程重用(我不想这样做)。
; \2 K0 I$ H$ z& C/ d: Z4 z! u' v1 J9 i+ q
[/ol]
7 _  Z2 c2 N4 U8 s谢谢!* C9 i4 H6 I, ?/ T! B) x
                ! S* F5 d- R  I5 _- j9 v
解决方案:
" U9 n* h2 _( S+ Z! ]. ]               
' [4 y$ c9 z1 g% L, d5 _' A- l, U) P# B0 e
$ @3 Q& |5 B; O$ Z) j
                从池中sp_reset_connection取出a时,ADO.NET会执行SqlConnection(将其关闭后才能返回到池中)。根据“ execsp_reset_connection”在Sql ServerProfiler中的含义是什么?所有SET选项均被重置。那将包括DEADLOCK_PRIORITY。
( |1 D# E! L7 |- d7 l4 i我仍然建议您编写一个微型测试程序来确认这一点。ADO.NET会话池不是完美的,例如,ISOLATION LEVEL关闭时它不会重置且不回滚事务。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则