Sql server SSMS保持连接开放是否有更深层次的原因?

Sql server SSMS保持连接开放是否有更深层次的原因?,sql-server,ssms,ssms-2017,Sql Server,Ssms,Ssms 2017,在SSMS中处理SQL文件时,SSMS会打开一个SQL连接,在处理该SQL文件的过程中,无论执行语句多少次,它都会使用相同的连接—永远不会关闭它 现在我正在编写一个web界面,基本上是SSMS的替代品,因为它的速度非常慢 现在,如果我想复制这个功能,我可以将连接放入一个静态ConcurrentDictionary,我可以从cookie/参数访问它,这不是问题 我想知道SSM为什么选择这样做? 为什么不关闭并重新打开连接 我不认为表现是原因,所以-有什么原因吗 我能想到的唯一原因是,通过这种方式,

在SSMS中处理SQL文件时,SSMS会打开一个SQL连接,在处理该SQL文件的过程中,无论执行语句多少次,它都会使用相同的连接—永远不会关闭它

现在我正在编写一个web界面,基本上是SSMS的替代品,因为它的速度非常慢

现在,如果我想复制这个功能,我可以将连接放入一个静态ConcurrentDictionary,我可以从cookie/参数访问它,这不是问题

我想知道SSM为什么选择这样做?
为什么不关闭并重新打开连接
我不认为表现是原因,所以-有什么原因吗

我能想到的唯一原因是,通过这种方式,您可以使用临时表,而不必使用全局临时表
如果需要分析查询速度较慢的数据,这可能很有用。
但我不认为这是原因-可以使用全局临时表来代替


用这种方式处理连接有什么好的理由吗

根据我的经验,根据您的连接类型和其他因素,每次要运行特别查询时打开一个新连接的速度可能会非常慢。。。i、 e.如果你的SPID一直在变化,那么在考虑某些问题时,过滤掉我们自己的SPID会很烦人。此外,在多个批次中,这可能会导致问题。。。就像将DB设置为单用户模式一样,您将获得一个新的SPID,不再是单用户,因此无法访问DB。还有一个远程DAC,一次只能由一个用户使用,这可能在这里发挥作用。不仅如此,全局临时表并不是唯一特定于会话的数据。我经常使用SSM在一个事务中作为单独的批处理运行多个语句。其他SPID特定角色,如
ALTER DATABASE SET SINGLE_USER
,也要求每个查询窗口都有一个连接。此外,“因为这件事非常慢”——在什么情况下,它既明显慢,又值得做些什么?是什么让你认为你能够超越基本连接之上的简单层次?+1@Damien_The_unsiver,你认为你有一个比SQL Server Operations Studio、SSM的任何Redgate插件或Atom/VS代码插件更好的解决方案。如果你这么做是为了好玩,我不是想劝阻你,但是这里有很多预先构建的解决方案。打开新连接仅在启用连接池的情况下“快速”。连接池带来了数据库管理工具的正确性问题-请参阅。