Sybase sp_who截断主机名

Tri*_*tos 3 sql sybase admin

我正在使用sybase服务器提供的Rapid SQL或isql连接到sql数据库。当我发出

sp_who username 
Run Code Online (Sandbox Code Playgroud)

命令我应该获得连接用户的列表。我可以,但是主机名列被截断了,例如,当主机地址为host0001时,它会被截断为host0,这是一个问题,因为有许多主机名以相同的前缀开头,例如host001,host002...。因此我不知道哪些进程阻塞了我的数据库,我无法登录到计算机并杀死这些进程。我没有特权从数据库isql控制台中杀死它们。我必须登录计算机并在那里杀死进程(因为我有特权停止这些进程)。问题是为什么sp_who会截断此列以及如何阻止它。

Mic*_*ner 5

sp_who从多个表中提取并合并信息以提供报告。它并非旨在产生可用于其他输入的输出。如果您需要sp_who的信息,最好对进行自己的查询sysprocesses。不幸的是,在这种情况下,执行自己的查询将无济于事,因为主机名不会被更改sp_who。在Sybase中,主机名是由正在连接的应用程序而不是服务器设置的(请尝试select hostname from master..sysprocesses,您将看到)。

一种解决方案是从其他客户端在连接字符串中添加一个set clientnameset 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
Run Code Online (Sandbox Code Playgroud)