当前位置:  开发笔记 > 数据库 > 正文

sp_reset_connection有什么作用?

如何解决《sp_reset_connection有什么作用?》经验,为你挑选了1个好方法。

sp_reset_connection似乎由SQL Server连接池调用,以确保从池中重用的连接重置其大部分设置.有没有人确切地知道它做了什么但不做什么呢?

例如,我从这篇文章中看到它没有重置事务隔离级别



1> Chris Klepei..:

当重用连接池中的连接时,数据访问API的层(如ODBC,OLE-DB和SqlClient)会调用(内部)存储过程sp_reset_connection.这样做是为了在重新使用之前重置连接状态.

似乎没有关于什么事情被重置的官方文档,但这里是一个非官方的列表.

sp_reset_connection重置连接的以下方面:

它会重置所有错误状态和数字(例如@@ error)

它停止所有EC(执行上下文),它们是执行并行查询的父EC的子线程

它将等待任何未完成的优秀I/O操作

它将通过连接释放服务器上的任何保留缓冲区

它将解锁连接使用的任何缓冲区资源

它将释放连接所拥有的所有内存

它将清除由连接创建的任何工作或临时表

它会杀死连接所拥有的所有全局游标

它将关闭所有打开的打开的SQL-XML句柄

它将删除任何与SQL-XML相关的开放工作表

它将关闭所有系统表

它将关闭所有用户表

它将删除所有临时对象

它将中止未平仓交易

在入伍时它将从分布式交易中出现缺陷

它将减少当前数据库中用户的引用计数; 哪个发布共享数据库锁

它将释放获得的锁

它将释放可能已获得的任何句柄

它会将所有SET选项重置为默认值

它将重置@@ rowcount值

它将重置@@ identity值

它将使用dbcc traceon()重置任何会话级跟踪选项

sp_reset_connection不会重置:

安全上下文,这就是连接池根据确切的连接字符串匹配连接的原因

如果使用sp_setapprole输入了应用程序角色,则无法还原应用程序角色

事务隔离级别


请参阅链接文章和连接页面 - 它也不会重置任何SET TRANSACTION ISOLATION LEVEL
推荐阅读
女女的家_747
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有