国王陛下万万岁

导航

 

本文所讲的关闭MS  SQL Server数据库连接不是指使用MS SQL Server Management Studio 去关闭某个已经连接的窗口。

这样不能关闭某些连接,比如,用Java JDBC或者其它客户端连接数据库所产生的连接MS SSMS就无法关闭。

 

1. 查询指定数据库有哪些连接(connection)

 

SELECT * FROM 
[Master].[dbo].[SYSPROCESSES] WHERE [DBID] 
IN 
(
  SELECT 
   [DBID]
  FROM 
   [Master].[dbo].[SYSDATABASES] 
  WHERE 
   NAME='test'  ---"test"为你要查询的数据库的名字
)

 

 

2.查询整个数据库系统所有的数据库有多少连接,以分组统计的方式显示。

select 
    db_name(dbid) as [Database Name], 
    count(dbid) as [No Of Connections],
    loginame as [Login Name]
from
    sys.sysprocesses
where 
    dbid > 0
group by 
    dbid, loginame

 

 

3.关闭指定数据库的连接

set nocount on
declare @databasename varchar(100)
declare @query varchar(max)
set @query = ''

set @databasename = 'test' --“test”为数据库的名字
if db_id(@databasename) < 4
begin
    print 'system database connection cannot be killeed'
return
end

select @query=coalesce(@query,',' )+'kill '+convert(varchar, spid)+ '; '
from master..sysprocesses where dbid=db_id(@databasename)

if len(@query) > 0
begin
print @query
    exec(@query)
end

 

posted on 2019-09-27 16:24  国王陛下万万岁  阅读(2749)  评论(0编辑  收藏  举报