MSSQL如何查看当前数据库的连接数 【转】

时间:2024-03-07 19:13:25

 

 - [SQL Server]版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明 http://ai51av.blogbus.com/logs/52955622.html   如果我们发布一个有后台数据库的应用程序,就会遇到数据库维护方面的问题。比如说现在你想维护你的数据库了,那就会面临着是否还有用户连接你的数据库呢,如果有暂时就不维护,如果没有,就维护,这个文章就是解决是否还有用户连接的问题。目前共找到3种方法,如果以后有更多的方法,继续添加!
1.通过系统的“性能”来查看: 开始->管理工具->性能(或者是运行里面输入 mmc)然后通过添加计数器添加 SQL 的常用统计 然后在下面列出的项目里面选择用户连接就可以时时查询到数据库的连接数了。不过此方法的话需要有访问那台计算机的权限,就是要通过windows账户登陆进去才可以添加此计数器。 2.通过系统表来查询:

  1. SELECT * FROM  
  2. [Master].[dbo].[SYSPROCESSES] WHERE [DBID] IN ( SELECT  
  3.    [DBID]  
  4. FROM  
  5.    [Master].[dbo].[SYSDATABASES]  
  6. WHERE  
  7.    NAME=\'DBName\'  
  8. )  
SELECT * FROM
[Master].[dbo].[SYSPROCESSES] WHERE [DBID] IN ( SELECT
   [DBID]
FROM
   [Master].[dbo].[SYSDATABASES]
WHERE
   NAME=\'DBName\'
)

DBName 是需要查看的数据库,然后查询出来的行数,就是当前的连接数。不过里面还有一些别的状态可以做参考用。 例如:连到master这个数据库写如下语句

  1. select * from sysprocesses where dbid in (select dbid from sysdatabases where name=\'MyDatabase\')  
select * from sysprocesses where dbid in (select dbid from sysdatabases where name=\'MyDatabase\')

将所有连接MyDatabase这个数据库的连接记录都求出来。 sysprocesses这个表记录所以连接到SQL SERVER数据库的连接。 3.通过系统过程来查询: SP_WHO \'UserName\' UserName 是当然登陆Sql的用户名,一般程序里面都会使用一个UserName来登陆SQL这样通过这个用户名就能查看到此用户名登陆之后占用的连接了。 如果不写UserName,那么返回的就是所有的连接。