sa
データベースにいくつかの不正なspidがあり、ログインして使用するとスリープ状態になっていることがわかりますが、それらを排除sp_who
するための使用kill <spid>
は失敗し、サーバー自体にアクセスしてバウンスすることはできません。 。これらのものを殺す他の方法はありますか?
2 に答える
システム プロセスは強制終了できません。たとえば、cmd が NETWORK HANDLER である sp_who の出力では、MIRROR HANDLER および CHECKPOINT SLEEP (まれに CHECKPOINT) および AUDIT PROCESS を強制終了できません。それらが「recv sleep」、「send sleep」、「alarm sleep」、および「lock sleep」のステータスを持っている場合、それらは殺される可能性があります。
sp_who の出力では、状態が "recv sleep" であるプロセスが SQL Server を使用しているユーザーに属しているかどうかはわかりませんが、コマンドの結果を調べるために一時停止している可能性があります。 sysprocesses テーブルに情報を照会することで、疑わしいプロセスの詳細を知ることができます。例:
spid = 8 の sysprocesses から hostprocess、program_name を選択します。
program_name が isql の場合、この spid を強制終了できることがわかります (などなど)。
私は時々似たようなことをするクライアントアプリケーションを持っています。クライアントは通常、選択の途中ですが、行を取得していません。(これはクライアント側のカーソルかもしれませんが、よくわかりません)。これらのスパイは殺せないようです。ユーザーを見つけて、ログオフするように依頼する必要があります。
これらが発生した他のシナリオは、サーバーでのエラーまたはスタックトレースの後です。エラーログをチェックして、危険なエントリがあるかどうかを確認してください。ある場合は、再起動が唯一のオプションになります。