sp_who
从多个表中提取并合并信息以提供报告。它并非旨在产生可用于其他输入的输出。如果您需要来自sp_who的信息,最好对进行自己的查询sysprocesses
。不幸的是,在这种情况下,执行自己的查询将无济于事,因为主机名不会被更改sp_who
。在Sybase中,主机名是由正在连接的应用程序设置的,而不是由服务器设置的(请尝试select hostname from master..sysprocesses
,您将看到)。
一种解决方案是从其他客户端在连接字符串中添加一个set clientname
或set clienthostname
命令。我相信可以通过ODBC来完成。否则,您可以使用该sysprocesses.ipaddr
列来区分主机:
select fid, spid, status, suser_name(suid), clienthostname, ipaddr
from master..sysprocesses
where suid = suser_id('username')
order by ipaddr, spid