显示SQL SERVER数据库上连接信息

本文介绍了一段 SQL 脚本,用于查询 SQL Server 中的所有活动连接信息,包括客户端主机名、登录名、数据库名等,并可根据需求选择性地查询 IP 地址。
if   object_id(N'tempdb.dbo.#tb')   is   not   null     drop   table   #tb  if   object_id(N'tempdb.dbo.#ip')   is   not   null     drop   table   #ip  declare @dbname   sysname, --要查询的数据库名,默认查询所有数据库的连接信息   @includeip   bit, --是否显示IP地址,因为查询IP地址比较费时,所以增加此控制 @dbid   int    set @dbname='hospital2008' set @includeip=1 set   @dbid=db_id(@dbname)   select    *   from   master..sysprocesses  where   hostname<>''   and   (@dbid   is   null   or   dbid=@dbid)   create   table   #tb(id   int   identity(1,1),dbname   sysname,hostname   nchar(128),loginname   nchar(128),net_address   nchar(12),net_ip   nvarchar(15),prog_name   nchar(128))   insert   into   #tb(hostname,dbname,net_address,loginname,prog_name)   select     hostname,db_name(dbid),net_address,loginame,program_name   from   master..sysprocesses  where   hostname<>''   and   (@dbid   is   null   or   dbid=@dbid)  if   @includeip=0   goto   lb_show     --如果不显示IP地址,就直接显示  declare   @sql   varchar(500),@hostname   nchar(128),@id   int   create   table   #ip(hostname   nchar(128),a   varchar(200))  declare   tb   cursor   local   for   select   distinct   hostname   from   #tb   open   tb   fetch   next   from   tb   into   @hostname  while   @@fetch_status=0  begin  set   @sql='ping '  +@hostname+  ' -a   -n   1   -l   1' insert   #ip(a)   exec   master..xp_cmdshell   @sql   update   #ip   set   hostname=@hostname   where   hostname   is   null   fetch   next   from   tb   into   @hostname   end   update   #tb   set   net_ip=left(a,patindex('%:%',a)-1)   from   #tb   a   inner   join   (  select   hostname,a=substring(a,patindex('Ping   statistics   for   %:%',a)+20,20)   from   #ip   where   a   like   'Ping   statistics   for   %:%')   b   on   a.hostname=b.hostname   lb_show:   select   id,数据库名=dbname,客户机名=hostname,用户名=loginname   ,网卡物理地址=net_address,IP地址=net_ip,应用程序名称=prog_name   from   #tb    --sp_password 跟踪不到执行的脚步
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值