我正在使用sybase服务器提供的Rapid SQL或isql连接到sql数据库。当我发出
sp_who username
Run Code Online (Sandbox Code Playgroud)
命令我应该获得连接用户的列表。我可以,但是主机名列被截断了,例如,当主机地址为host0001时,它会被截断为host0,这是一个问题,因为有许多主机名以相同的前缀开头,例如host001,host002...。因此我不知道哪些进程阻塞了我的数据库,我无法登录到计算机并杀死这些进程。我没有特权从数据库isql控制台中杀死它们。我必须登录计算机并在那里杀死进程(因为我有特权停止这些进程)。问题是为什么sp_who会截断此列以及如何阻止它。
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
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2628 次 |
最近记录: |