什么是"exec sp_reset_connection"的意思是在Sql Server Profiler?[重复]
题
这个问题已经有一个答案在这里:
试着去理解什么Sql Profiler意味着通过发射"sp_reset_connection".
我已经下文中,"可执行sp_reset_connection"行随后通过BatchStarting和完成,
RPC:Completed exec sp_reset_connection
SQL:BatchStarting SELECT [c].[TestID] AS [TestID], [c].[Description] AS [Description] FROM [dbo].[Test] AS [c]
SQL:BatchCompleted SELECT [c].[TestID] AS [TestID], [c].[Description] AS [Description] FROM [dbo].[Test] AS [c]
基本上不会第一线"exec sp_reset_connection"的意思是整个过程(我的连接的开幕,选择stmt运行,然后关闭连接和释放回到游泳池)仅仅采取地方吗?或者我的连接仍然是在开放的阶段。
而且,为什么sp_reset_connection执行之前,我自己的选择声明,它不应该重置来后用户的sql?
我想知道有没有办法知道更详细的当连接打开和关闭?
看到"exec sp_reset_connection",这是否意味着我闭连接?
解决方案
像其他回答说, sp_reset_connection
表明这方面的游泳池被重新使用。要知道的一个具体后果!
sp_reset_connection不重 交易隔离级别的 服务器默认从前 连接的设置。
更新:开始SQL2014年,对客户驱动程序与TDS7.3版本或更高,交易的隔离级别将重置回来的默认。
ref: SQL服务器:隔离级别的泄漏的跨池连接
这里是一些附加信息:
数据访问API层喜欢ODBC, OLE数据库和系统。数据。SqlClient所有 呼叫的(内部)存储程序 sp_reset_connection当重新使用 连接从一个连接池。它的 这样做是为了复状态的 连接之前,它得到重新使用, 但是没有记载了什么 事情变得复位。本文试图 文件的部分 连接,得到重置。
sp_reset_connection重置 以下方面的一连接:
所有的错误的国家和号码 (像@@error)
停止所有EC(执行情况) 这是儿童线的父母EC 执行一个平行的查询
等待任何未I/O 操作是杰出的
释放任何举行的缓冲器上 服务器的连接
解锁的任何缓冲资源 使用通过连接
释放所有分配的记忆 所拥有的连接
清除的任何工作或临时的 表创建的 连接
杀死所有全球光标所拥有的 连接
关闭任何打开SQL-XML把手打开
删除任何开SQL-XML有关的工作表
关闭所有系统表
关闭所有用户表
下降的所有临时的对象
中止公开交易
缺陷分布式交易的时候入伍
递减的参数 用户在当前的数据库 发布公共数据库锁
释放获取的锁
发布任何获得处理
将所有组选项的默认值
重@@rowcount值
重@@身份的价值
重置任何一届会议一级跟踪 选择使用阻traceon()
重CONTEXT_INFO到
NULL
在SQL服务器2005年和较新的 [不一部分原文]sp_reset_connection将不复位:
安全方面,这就是为什么 连接池连接匹配 根据确切的连字符串
申请进入角色 使用sp_setapprole,由于应用程序 角色不能恢复
注:我名单列在这里因为我不想让它失去了在以往瞬态网络。
其他提示
这是一个迹象,连接池正在使用(这是一件好事)。
但请注意:
如果问题设置事务隔离水平在一个存储程序或触发的,当该物体返回控制的隔离水平是重要的水平时生效的对象是援引。例如,如果设置重复读批中,并且该批那么呼叫一个存储程序设置的隔离级序列化、隔离平设置恢复到可重复读时所存储程序控制返回到本批处理。