SQLServer查杀会话连接

database

sysprocesses 表中保存关于运行在 Microsoft® SQL Server™ 上的进程的信息。这些进程可以是客户端进程或系统进程。

Select * From master.sys.sysprocesses
 

一、使用sysprocesses查询当前系统被阻塞的会话

  字段Blocked<>0代表当前的SQL Server会话ID被锁定,锁定当前会话ID的SQL Server会话ID就是Blocked中的值。

  查询当前系统被锁定的会话信息  

        Select * From master.sys.sysprocesses Where Blocked <> 0

二、查询某个会话所执行的SQL语句

        --    dbcc inputbuffer(spid) 如:
        dbcc inputbuffer(3) 

三、杀死某个会话

  SQL Server系统库对应的会话不能Kill,可以用dbid>4进行判断;dbid<=4的代表系统库

        --kill spid 如
        kill 63

四、查看当前所有数据库的连接情况

Select db_name(dbid) as [Database Name],  count(dbid) as [No Of Connections], loginame as [Login Name] 
From master.sys.sysprocesses 
Where dbid > 4 
Group By dbid, loginame
 

五、杀死某个数据库上的所有会话 

Use master
Go
Alter Proc Proc_KillSpidByDatabaseName
@dbname varchar(50)
As
Begin
    If DB_ID(@dbname) Is Null
        Begin
            Print "Database doesn""t exist."
        End
    If DB_ID(@dbname) <= 4
        Begin
            Print "Only user processes can be killed."
            Return
        End

    Declare @KillSpid Varchar(Max)
    Select @KillSpid = Coalesce(@KillSpid+"; ","") + "Kill " + Cast(spid as varchar(10)) from sys.sysprocesses Where dbid = DB_ID(@dbname)
    If Len(@KillSpid) > 0
        Begin
            Print @KillSpid
            Exec (@KillSpid)
            Print "Executed successfully."
        End
    Else
        Begin
            Print "No connecting on " + @dbname
        End
End

六、sys.sysprocesses列名描述

spid smallint SQL Server 进程 ID。 
kpid smallint Microsoft Windows NT 4.0® 线程 ID。 
blocked smallint 分块进程的进程 ID (spid)。 
waittype binary(2) 保留。 
waittime int 当前等待时间(以毫秒为单位)。当进程不处于等待时,为 0。 
lastwaittype nchar(32) 表示上次或当前等待类型名称的字符串。 
waitresource nchar(32) 锁资源的文本化表示法。 
dbid smallint 当前正由进程使用的数据库 ID。 
uid smallint 执行命令的用户 ID。 
cpu int 进程的累计 CPU 时间。无论 SET STATISTICS TIME ON 选项是 ON 还是 OFF,都为所有进程更新该条目。 
physical_io int 进程的累计磁盘读取和写入。 
memusage int 当前分配给该进程的过程高速缓存中的页数。一个负数,表示进程正在释放由另一个进程分配的内存。 
login_time datetime 客户端进程登录到服务器的时间。对于系统进程,是存储 SQL Server 启动发生的时间。 
last_batch datetime 客户端进程上次执行远程存储过程调用或 EXECUTE 语句的时间。对于系统进程,是存储 SQL Server 启动发生的时间。 
ecid smallint 用于唯一标识代表单个进程进行操作的子线程的执行上下文 ID。 
open_tran smallint 进程的打开事务数。 
status nchar(30) 进程 ID 状态(如运行、休眠等)。 
sid binary(85) 用户的全局唯一标识符 (GUID)。 
hostname nchar(128) 工作站的名称。 
program_name nchar(128) 应用程序的名称。 
hostprocess nchar(8) 工作站进程 ID 号。 
cmd nchar(16) 当前正在执行的命令。 
nt_domain nchar(128) 客户端的 Windows NT 4.0 域(如果使用 Windows 身份验证)或信任连接的 Windows NT 4.0 域。 
nt_username nchar(128) 进程的 Windows NT 4.0用户名(如果使用 Windows 身份验证)或信任连接的 Windows NT 4.0 用户名。 
net_address nchar(12) 指派给每个用户工作站上的网络接口卡唯一标识符。当用户登录时,该标识符插入 net_address 列。 
net_library nchar(12) 用于存储客户端网络库的列。每个客户端进程都在网络连接上进入。网络连接有一个与这些进程关联的网络库,该网络库使得这些进程可以建立连接。有关更多信息,请参见客户端和服务器 Net-Library。 
loginame nchar(128) 登录名。

 

个人学习记录(来源网络)

以上是 SQLServer查杀会话连接 的全部内容, 来源链接: utcz.com/z/532255.html

回到顶部