如何检查谁杀死了正在运行的作业? 如果没有生成日志

Sai*_*ala 2 sql-server jobs

SQL Server 上发生未指定的错误。连接可能已被服务器终止。

这是我收到的错误。(执行作业时)

[SQLSTATE HY000](错误 0)无法继续执行,因为会话处于终止状态。
[SQLSTATE HY000](错误 596)。步骤失败。

Joh*_*ner 5

错误日志应包含有关哪个会话杀死特定进程的一些信息。运行以下语句以获取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
Run Code Online (Sandbox Code Playgroud)

下面是一个例子:

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)
Run Code Online (Sandbox Code Playgroud)