首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL Server连接计数问题

SQL Server连接计数问题
EN

Stack Overflow用户
提问于 2009-09-27 05:33:21
回答 3查看 5.2K关注 0票数 2

我使用的是SQL Server2008Enterprise+ .Net 3.5 + C# + ADO.Net。我正在使用下面的SQL语句来监控连接号,对吗?如果是,我的困惑是,在下面的语句中,来自ADO.Net客户端的一个连接只映射到一个连接?或者一个ADO.Net连接可以映射到这里的多个连接?

代码语言:javascript
复制
SELECT  *  FROM sys.dm_os_performance_counters WHERE object_name = 'SQLServer:General Statistics'

(监视用户连接行)

先谢谢你,乔治

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-09-28 17:01:54

使用SELECT * FROM sys.dm_exec_connections查找所有连接。client_net_address有客户端地址,因此您可以追踪连接的来源。

使用SELECT * FROM sys.dm_exec_sessions查找所有会话(通常情况下,会话与connections一一对应,除非MARSprogram_name列将包含您在连接字符串中传递的application name的值,并允许您标识自己的连接。

使用SELECT * FROM sys.dm_exec_requests查看所有当前正在执行的批处理(请求)。

性能计数器只会给出一个值,即当前连接的数量:

代码语言:javascript
复制
SELECT  cntr_value
FROM sys.dm_os_performance_counters 
WHERE object_name = 'SQLServer:General Statistics'
  and counter_name = 'User Connections'
票数 4
EN

Stack Overflow用户

发布于 2009-09-27 08:42:05

这能满足你的需求吗?如果您试图计算连接的数量,我会感到困惑。你的问题似乎是否定的,而你的评论意味着我同意。

代码语言:javascript
复制
Sp_who2 'Active'
票数 2
EN

Stack Overflow用户

发布于 2009-09-27 09:01:18

默认情况下,基础SQL Server驱动程序代码使用连接池。您会发现,您的应用程序“拥有”的物理连接的数量将随着时间的推移而增长到当前的限制,但这与“正在使用”的数量不同。

这避免了在每个链路上重新协商安全性等问题,从而加快了应用程序的数据库访问速度。

正如@sgmarshall所提到的,使用sp_who2存储过程来确定每个连接当前正在执行的操作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1482864

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档