Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# SqlConnection与Sql会话。他们的一生是一致的吗?_C#_Asp.net_Sql_Sql Server_Connection Pooling - Fatal编程技术网

C# SqlConnection与Sql会话。他们的一生是一致的吗?

C# SqlConnection与Sql会话。他们的一生是一致的吗?,c#,asp.net,sql,sql-server,connection-pooling,C#,Asp.net,Sql,Sql Server,Connection Pooling,我想为我的c#应用程序中的某些进程应用一些sql会话级别设置 例如,我想将一些后台进程的死锁\u优先级设置为低 问题是: 如果我打开一个新的sql连接,是否会启动一个新的sql会话 sql会话在连接关闭之前是否有效?如果我在打开SqlConnection后立即应用我的设置,它们是否对在同一SqlConnection上下文中执行的所有查询有效 连接池怎么样?我的SET DEADLOCK\u PRIORITY LOW设置是否可能会被我系统中的其他进程重用(我不想这样做),因为SqlConnectio

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

例如,我想将一些后台进程的
死锁\u优先级设置为

问题是:

  • 如果我打开一个新的sql连接,是否会启动一个新的sql会话

  • sql会话在连接关闭之前是否有效?如果我在打开
    SqlConnection
    后立即应用我的设置,它们是否对在同一
    SqlConnection
    上下文中执行的所有查询有效

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


  • 谢谢大家!

    ADO.NET在从池中获取
    SqlConnection
    时执行
    sp\u reset\u connection
    (在关闭该连接以便将其返回池后)。根据所有
    设置
    选项正在重置。这将包括
    死锁\u优先级


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

    据我所知,
    会话将显示外部连接和内部进程,
    连接将只显示外部连接。谢谢!这是相当有用的。你能同时回答前两个问题吗?我猜这两个问题的答案都是“是”
    SqlConnection
    实际上代表了一个SQLServer会话。物理连接由ADO.NET管理。每当您
    打开
    一个
    SqlConnection
    时,您创建的是一个新会话,而不是一个新连接。那么:1=是,2=是,3=否(但是谨防<代码>隔离级别< /代码>!-我认为这是一个bug)。注意:<代码> SPRESETHOLL连接< /代码>(不幸的是)当从池获取连接时,不释放连接。这可能导致两个操作之间出现“奇怪的会话内容”,包括会话sp_getapplocks未被释放:}