gpt4 book ai didi

sql - Sybase sp_who 截断主机名

转载 作者:行者123 更新时间:2023-12-01 11:42:03 25 4
gpt4 key购买 nike

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

sp_who username 

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

最佳答案

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

关于sql - Sybase sp_who 截断主机名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19315665/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com