SQL Server sp_reset_connection 说明

(下列内容来自 "桦仔" 的BLOG,主要为加强个人记忆使用)

sp_reset_connection会在SQLSERVER里做些什么?
1、清除连接现有所有内部数据结构。包括:
(1)清除所有openxml打开的document句柄
(2)关闭所有的游标(cursor)
(3)释放所有SQL语句句柄
(4)清除所有临时对象(临时表等)
(5)释放连接持有的所有锁
(6)清除缓存的所有安全上下文信息(security context)

 

2、重置连接设置。包括:
(1)重置连接的SQL Trace标志值(例如1204,1222,3604等)
(2)重置所有"SET" 选项值(SET IMPLICIT_TRANSACTIONS ON 等)
(3)重置连接的统计信息值


3、回滚所有SQLSERVER事务
需要说明的是,如果连接当前参与了一个由客户端发起的分布式事务,这个分布式事务不会受到影响。

在SQL里的事务还会被保留

 

4、把当前数据库切换到用户默认数据库

 

5、SQLSERVER会再次检查当前用户是否有权做数据库连接。如果这个权力已被移除
SQLSERVER会中断这个物理连接(这样防止一个已经被取消访问权的用户还能长时间
使用数据库的问题)

 

完成这些事情以后,一个连接基本上已经和他先前做的事情不再有任何关系(分布式事务除外)
可以说,这个连接和一个新的连接已经没有什么大的区别了。通过这些,应用程序的用户
可以尽快地拿到和释放连接,而SQLSERVER这边也不会因为连接的重复使用而产生相互影响的问题

posted @ 2014-03-25 08:30  loudon  阅读(1088)  评论(0)    收藏  举报