这个问题已经有一个答案在这里:

试着去理解什么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 表明这方面的游泳池被重新使用。要知道的一个具体后果!

吉米Mays'MSDN的博客 说:

sp_reset_connection不重 交易隔离级别的 服务器默认从前 连接的设置。

更新:开始SQL2014年,对客户驱动程序与TDS7.3版本或更高,交易的隔离级别将重置回来的默认。

ref: SQL服务器:隔离级别的泄漏的跨池连接

这里是一些附加信息:

什么sp_reset_connection做什么?

数据访问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,由于应用程序 角色不能恢复

注:我名单列在这里因为我不想让它失去了在以往瞬态网络。

其他提示

这是一个迹象,连接池正在使用(这是一件好事)。

但请注意:

如果问题设置事务隔离水平在一个存储程序或触发的,当该物体返回控制的隔离水平是重要的水平时生效的对象是援引。例如,如果设置重复读批中,并且该批那么呼叫一个存储程序设置的隔离级序列化、隔离平设置恢复到可重复读时所存储程序控制返回到本批处理。

http://msdn.microsoft.com/en-us/library/ms173763.aspx

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top