web-dev-qa-db-ja.com

実行中のジョブを強制終了したユーザーを確認する方法?ログが生成されない場合

SQL Serverで不明なエラーが発生しました。接続がサーバーによって終了された可能性があります。

これは私が得ているエラーです(ジョブが実行されたとき)

[SQLSTATE HY000](エラー0)セッションが強制終了状態のため、実行を続行できません。
[SQLSTATE HY000](エラー596)。ステップは失敗しました。

2
Sainath Bala

エラーログには、特定のプロセスを強制終了したセッションに関する情報が含まれているはずです。次のステートメントを実行して、KILLコマンドの送信元であるユーザーのホスト名とプロセスIDを取得します。

EXEC xp_readerrorlog 0, 1, N'kill', NULL, NULL, NULL, N'DESC'

コマンドが実行されてから時間が経過した場合、セッションIDが再利用されるため、古い結果が返される可能性があることに注意してください。ホストプロセスIDを使用して、ユーザーを検索できます。

select login_name, session_id, Host_name, Host_process_id
from sys.dm_exec_sessions where Host_process_id = XXXX AND session_id = YY

次に例を示します。

EXEC xp_readerrorlog 0, 1, N'kill', NULL, NULL, NULL, N'DESC'

LogDate                 ProcessInfo  Text
----------------------- ------------ ----------------------------------------------------------------------
2017-06-20 07:17:32.210 spid64       Process ID 62 was killed by hostname JOHNLAPPY, Host process ID 7968.

(1 row(s) affected)



select login_name, session_id, Host_name, Host_process_id from sys.dm_exec_sessions where Host_process_id = 7968 AND session_id = 62

login_name              session_id Host_name  Host_process_id
----------------------- ---------- ---------- ---------------
CONTOSO\john.eisbrener  62         JOHNLAPPY  7968

(1 row(s) affected)
5
John Eisbrener

エラーが発生した時刻をエラーログで確認することをお勧めします。 「kill」することはできません。たとえば、DBCC CHECKDBの実行中に同じエラーが表示され、ジョブは同じエラーで失敗しました

SQL Serverで不明なエラーが発生しました。接続がサーバーによって終了された可能性があります。

データベースをsingle_user with rollback immediateに配置したのはセッションでした。エラーログには強制終了メッセージがありませんが、データベースをシングルユーザーに配置するspidを報告しました。

実行時間までにdefault traceで検索したログインを見つけるために、alterデータベースに対応するEventClass = 164およびObjectType = 16964を報告する行があり、報告されたDatabaseNameは対象のデータベースであり、SessionLoginNameでした。探していたのは

2
sepupic