Sybase中查询某个进程在执行哪些查询

sp_who可以查询系统中进程的情况,sp_lock可以查询系统中锁的情况,知道是哪个进程出了问题之后,可以用一下方法查询某个进程在干什么:

dbcc traceon(3604)
go
dbcc sqltext(pid)

其中pid为进程号,输出结果如下:

SQL Text: select xh,gcmc,zbjggsrq,zbtzsrq from gs_zbxx where datediff(dd,zbjggsrq,getdate())<=3 order by zbjggsrq desc

see also:
Sybase FAQ: 6/19 – ASE Admin (3 of 7)
Advanced ASE Administration

Update @ 2007-04-20

其实3604是指定dbcc把信息输出到用户屏幕上,相应的还可以使用dbcc traceon(3604)指定输出到errorlog,不过这些都是针对人为的操作,如果是使用程序,比如php语言来查询dbcc信息的话,php是无法得到这些输出的,这种情况就只能借助外部程序,比如isql或者sqsh来实现了,就像这样:

$sql = '';
$sql .= "dbcc traceon(3604)\n"; 
$sql .= "go\n";
$sql .= "dbcc sqltext($spid)\n";

// Notice, multi-line cmd
$cmd = "sqsh -S $host -U $user -P \"$pass\" -C \"$sql\"";
$rs = shell_exec($cmd);

然后对$rs进行处理,过滤掉dbcc产生的杂乱信息,就得到了实际的进程sql,还有一种dbcc查询方式,不过输出的信息更多更乱:

$sql .= "dbcc pss(0, $spid, 0)";

现在还剩下一个缺点,就是有些sql(可能是多行的)查询出来时会被无端截断,只显示后面一部分,不过大部分情况下还都是好的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值