深入研究 SQL Server 连接池中 sp_reset_connection 的功能
SQL Server 使用连接池来有效管理数据库连接。该机制的核心是存储过程 sp_reset_connection,它在重用池中的连接时被调用。其主要目标是重置连接的状态以确保为后续使用做好准备。
全面重置
sp_reset_connection 重置连接的各个方面,包括:
- 错误状态和数字
- 执行上下文(EC)
- 未完成的 I/O 操作
- 保留的服务器缓冲区
- 锁定的缓冲区资源
- 连接分配的内存
- 临时表
- 全局游标
- 打开SQL-XML 句柄和相关工作表
- 系统和用户表
- 临时对象
- 开放事务
- 分布式事务登记
- 共享数据库锁
- 已获取锁
- 句柄
- SET 选项
- @@rowcount
- @@identity
- 会话级跟踪options
排除
但是,sp_reset_connection 特别避免重置:
- 安全上下文,这对于基于以下内容匹配连接至关重要连接字符串
- 应用程序角色,因为它们不能已恢复
- 事务隔离级别
实际影响
- 通过 sp_setapprole 建立的应用程序角色仍然有效。
- 事务必须由应用程序显式管理,如 sp_reset_connection不会重置它们。
- 避免依赖在连接重用中保留的 SET 选项,因为它们会重置为默认值。
以上是sp_reset_connection 如何重置 SQL Server 连接以及它不会影响什么?的详细内容。更多信息请关注PHP中文网其他相关文章!