3

sybase サーバーが提供する Rapid SQL または isql を使用して sql データベースに接続しています。私が発行するとき

sp_who username 

コマンド 接続されているユーザーのリストを取得する必要があります。私はそうしますが、ホスト名の列が切り捨てられるため、たとえば、ホストアドレスがhost0001の場合、host0に切り捨てられます.host001、host002など、名前が同じプレフィックスで始まるホストがたくさんあるため、これは問題です....そのため、わかりませんどのプロセスがデータベースをブロックしており、マシンにログインしてそれらのプロセスを強制終了することができません。データベース isql コンソールからそれらを強制終了する権限がありません。マシンにログインしてそこでプロセスを強制終了する必要があります(これらのプロセスを停止する権限があるため)。問題は、sp_who がこの列を切り捨てる理由と、それを防ぐ方法です。

4

1 に答える 1

5

sp_who複数のテーブルから情報を引き出して結合し、レポートを提供します。他の何かの入力に使用できる出力を生成することは意図されていません。sp_who からの情報が必要な場合は、に対して独自のクエリを実行することをお勧めしますsysprocesses。残念ながら、この場合、ホスト名は によって変更されないため、独自のクエリを実行しても役に立ちませんsp_who。Sybase では、ホスト名はサーバーではなく、接続しているアプリケーションによって設定されます (試してみるselect hostname from master..sysprocessesとわかります)。

set clientname1 つの解決策は、これらの他のクライアントからの接続文字列の一部としてorset 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
于 2013-10-11T15:19:23.460 に答える