Sybase sp_who截断主机名

时间:2013-10-11 10:16:04

标签: sql admin sybase

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

sp_who username 

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

1 个答案:

答案 0 :(得分:4)

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