日期:2014-05-16  浏览次数:20440 次

sqlserver 2008 数据库中连接状态

?

?

SELECT * FROM

[Master].[dbo].[SYSPROCESSES] WHERE [DBID] IN ( SELECT

? ?[DBID]

FROM

? [Master].[dbo].[SYSDATABASES]

WHERE

? ?NAME='web'

)

?

?

?

?

?

?

?

?

1.通过管理工具
开始->管理工具->性能(或者是运行里面输入mmc)然后通过添加计数器添加?SQL?的常用统计然后在下面列出的项目里面选择用户连接就可以时时查询到数据库的连接数了。不过此方法的话需要有访问那台计算机的权限,就是要通过Windows账户登陆进去才可以添加此计数器。
?
2.通过系统表查询
?
SQL?code
?
SELECT?*?FROM
[Master].[dbo].[SYSPROCESSES]?WHERE?[DBID]?IN?(?SELECT
???[DBID]
FROM
??[Master].[dbo].[SYSDATABASES]
WHERE
???NAME='DBName'
)
?

DBName?是需要查看的数据库,然后查询出来的行数,就是当前的连接数。不过里面还有一些别的状态可以做参考用。
?
例如:连到master这个数据库写如下语句
?
SQL?code
?
select?*?from?sysprocesses?where?dbid?in?(select?dbid?fromsysdatabases?where?name='MyDatabase')
?

将所有连接MyDatabase这个数据库的连接记录都求出来。
sysprocesses这个表记录所以连接到SQL?SERVER数据库的连接。
?
3.通过系统的存储过程来查找
?
SQL?code
?
SP_WHO?'UserName'
?

UserName是当然登陆Sql的用户名,一般程序里面都会使用一个UserName来登陆SQL这样通过这个用户名就能查看到此用户名登陆之后占用的连接了。