如何查看SPID中看到是什么用户名或者计算机器访问数据库?

在一些性能测试中,性能瓶颈有时会出现在数据库端,这是我们往往想了解有哪些客户端连接到DB server.

 

可以通过SPID查看。

 

1. 利用如下代码找出SPID column坐在的表,这个表应该是sysprocesses。

 

  select T.name,* from sys.system_columns C 。
  join sys.all_objects T on C.object_id=T.object_id
  where C.name like '%spid%'

 

补充:如何利用查出column所在的表的名称?

  ————利用sys.columns 表和sys.tables表 查出column所在的表名,但是有时候0 record is returned,原因有可能是没有一个表包含你所查询的column,另外一个原因,可能是column是个系统表的column,这是你就需要用另外的脚本区查询。

 select T.name,* from sys.columns C
  join sys.tables T on C.object_id=T.object_id
  where C.name like '%spid%'

       

————利用sys.system_columns 表和sys.all_objects表 查出column所在的表名

select T.name,* from sys.system_columns C 。
  join sys.all_objects T on C.object_id=T.object_id
  where C.name like '%spid%'

 

 

2. 获得哪些访问DB server的机器列表和相关登陆账号信息:

select P.hostname, loginame,  D.name,D.status,P.status,blocked,kpid, * from sysprocesses p left join sysDatabases d on p.dbid=d.dbid
利用上述语句,可以查到所有进程,其中hostName是访问db server机器名, loginame是登陆账号,blocked记录了进程死锁的数量。
其中stutus有下面几个值:

Background

SPID 正在执行后台任务。

Sleeping

SPID 当前没有执行任务。 通常,这表示 SPID 正在等待应用程序的命令。

Runnable

SPID 当前正在执行任务。

Dormant

Sleeping 相同,但 Dormant 还表示在完成 RPC 事件后 SPID 已被重置。 重置将清除 RPC 事件期间所使用的资源。 这是个正常状态,并且 SPID 可用,正在等待执行后续命令。

Rollback

SPID 在事务的回滚过程中。

Defwakeup

表示 SPID 正在等待处于释放过程中的资源。 wait resource 字段应当表示提到的资源。

Spinloop

在试图获得用于 SMP 系统并发控制的旋转锁定 (spinlock) 时进程正处于等待中。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值