(最初在 StackOverflow 上问这个问题被告知这个社区是正确的)。
我正在调查未发布的 SQL Server 数据库连接的可能性。我运行了 SQL Server Profiler 并收集了事件跟踪。通常在执行 SQL 命令后,我会看到“Audit Logout”事件,并且经常会执行 sp_reset_connection,这表明连接已重新用于新命令。
但是,我跟踪了一些 SPID,发现在执行了一些 SQL 命令(例如 INSERT)之后,给定 SPID 不再有事件。这是否意味着连接没有被释放,保持打开状态并且不能被重用?
好问题!要了解连接现在是否仍处于打开状态,请查看 sys.sysprocesses:
通常,只要它们什么都不做,打开的连接对 SQL Server 来说不是问题——它可以处理数万个连接。连接池 - 保持连接打开并准备好重用 - 很好,并且不会在 SQL Server 上消耗那么多资源。
我通常更担心睡眠会话 - 几分钟前开始请求但没有完成的人 - 你可以通过 Adam Machanic 的免费sp_WhoIsActive找到那些: