You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SqlConnection关闭后全局临时表未删除,父窗体关闭才消失的原因

全局临时表存活原因解析

这核心原因是数据库连接池的机制,结合SQL Server全局临时表的生命周期规则共同导致的:

  • 首先明确全局临时表(##开头)的生命周期:它会在创建它的原始会话完全终止,且没有其他会话正引用它的时候才会被SQL Server自动删除。
  • 子窗体关闭SQL连接时,调用的Close()/Dispose()并没有真正断开与SQL Server的会话——因为应用程序默认启用了连接池(比如.NET的SqlClient、Java的JDBC等都默认开启)。此时连接只是被放回连接池,处于空闲状态,对应的SQL Server会话并没有结束。
  • 直到整个应用程序进程(父窗体所在的进程)关闭时,连接池才会销毁所有空闲连接,对应的SQL Server会话才真正终止。这时全局临时表失去了它的创建会话,才会被SQL Server清理删除。

补充验证方式:如果在连接字符串中添加Pooling=false禁用连接池,子窗体关闭连接时SQL会话会立即终止,全局临时表也会随之被删除(前提是没有其他会话在使用它)。

内容的提问来源于stack exchange,提问作者Torpi1974

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 06:22:39