作业失败作业由计划 1016 调用。运行 的最后一步是步骤 1
The job failed the job was invoked by schedule 1016. The last step to run was step1
the job failed the job was invoked by schedule 1016. The last step to run was step1
当我尝试 运行 作业时收到一条失败消息,但是当我 运行 使用 SSIS 时,包成功 运行s。我已经搜索过 google 但我找不到与代码 1016 相同的错误。请帮助解决此问题。
如注释所示,1016 不是错误消息。相反,它是时间表的标识符。这就是为什么你不会找到关于它的其他问题。
让我们弄清楚失败的作业是什么以及它应该做什么。
使用 SSMS,连接到有问题的服务器并运行以下查询
SELECT
SJ.name AS JobName
, JS.step_id
, JS.step_name
, JS.subsystem
, JS.command
, JS.server
, JS.proxy_id
, JS.step_uid
, SP.name AS proxy_name
, C.credential_id
, C.name AS credential_name
, C.credential_identity
FROM
msdb.dbo.sysjobschedules AS SJS
INNER JOIN
msdb.dbo.sysjobs AS SJ
ON SJ.job_id = SJS.job_id
INNER JOIN
msdb.dbo.sysjobsteps AS JS
ON JS.job_id = SJ.job_id
LEFT OUTER JOIN
msdb.dbo.sysproxies AS SP
ON SP.proxy_id = JS.proxy_id
LEFT OUTER JOIN
msdb.sys.credentials AS C
ON C.credential_id = SP.credential_id
WHERE
EXISTS
(
SELECT
*
FROM
msdb.dbo.sysschedules AS SS
WHERE
SS.schedule_id = SJS.schedule_id
AND SS.schedule_id = 1016
)
ORDER BY 1,2;
此查询将查找属于作业计划 ID 1016 成员的所有作业。作业可以共享一个计划,因此如果您发现列出了多个作业(第 1 列),则需要查看作业执行以找出失败的作业。
此查询将公开支持作业步骤定义的所有数据,因此您将查找 step_id = 1 的所有位置,因为您的错误消息表明 The last step to run was step1
除非那是step_name 的值然后对其进行过滤。
你指出 SSIS 包 运行 和你一样好,所以应该将命令列修补到你的问题中,因为它标识了工作在做什么,并且可以为“你”提供参考点运行打包。
除此之外,proxy_name、credential_name、credential_identity 如果不为 null,则表明我们已经使用了经过认证的代理,这增加了另一层来识别包可能出错的地方。
如果此包从 SSISDB 执行,那么您也需要将错误日志转储到您的问题中。
-- Find all messages associated to the last failing run
SELECT
OM.operation_message_id
, OM.operation_id
, OM.message_time
, OM.message_type
, OM.message_source_type
, OM.message
FROM
SSISDB.catalog.operation_messages AS OM
WHERE
EXISTS
(
-- Find the last failing operation
-- lazy assumption that biggest operation
-- id is last. Could be incorrect if a long
-- running process fails after a quick process
-- has also failed
SELECT
MAX(OMI.operation_id)
FROM
SSISDB.catalog.operation_messages AS OMI
WHERE
OMI.message_type = 120
AND OM.operation_id = OMI.operation_id
);
您可以使用本机报告(所有执行)来查找包的失败执行。第一列,ID
是 operation_id,所以你可以用基本的 OM.operation_id = 10
替换 EXISTS 子句,如果你只想要错误,过滤 AND message_type = 120
the job failed the job was invoked by schedule 1016. The last step to run was step1
当我尝试 运行 作业时收到一条失败消息,但是当我 运行 使用 SSIS 时,包成功 运行s。我已经搜索过 google 但我找不到与代码 1016 相同的错误。请帮助解决此问题。
如注释所示,1016 不是错误消息。相反,它是时间表的标识符。这就是为什么你不会找到关于它的其他问题。
让我们弄清楚失败的作业是什么以及它应该做什么。
使用 SSMS,连接到有问题的服务器并运行以下查询
SELECT
SJ.name AS JobName
, JS.step_id
, JS.step_name
, JS.subsystem
, JS.command
, JS.server
, JS.proxy_id
, JS.step_uid
, SP.name AS proxy_name
, C.credential_id
, C.name AS credential_name
, C.credential_identity
FROM
msdb.dbo.sysjobschedules AS SJS
INNER JOIN
msdb.dbo.sysjobs AS SJ
ON SJ.job_id = SJS.job_id
INNER JOIN
msdb.dbo.sysjobsteps AS JS
ON JS.job_id = SJ.job_id
LEFT OUTER JOIN
msdb.dbo.sysproxies AS SP
ON SP.proxy_id = JS.proxy_id
LEFT OUTER JOIN
msdb.sys.credentials AS C
ON C.credential_id = SP.credential_id
WHERE
EXISTS
(
SELECT
*
FROM
msdb.dbo.sysschedules AS SS
WHERE
SS.schedule_id = SJS.schedule_id
AND SS.schedule_id = 1016
)
ORDER BY 1,2;
此查询将查找属于作业计划 ID 1016 成员的所有作业。作业可以共享一个计划,因此如果您发现列出了多个作业(第 1 列),则需要查看作业执行以找出失败的作业。
此查询将公开支持作业步骤定义的所有数据,因此您将查找 step_id = 1 的所有位置,因为您的错误消息表明 The last step to run was step1
除非那是step_name 的值然后对其进行过滤。
你指出 SSIS 包 运行 和你一样好,所以应该将命令列修补到你的问题中,因为它标识了工作在做什么,并且可以为“你”提供参考点运行打包。
除此之外,proxy_name、credential_name、credential_identity 如果不为 null,则表明我们已经使用了经过认证的代理,这增加了另一层来识别包可能出错的地方。
如果此包从 SSISDB 执行,那么您也需要将错误日志转储到您的问题中。
-- Find all messages associated to the last failing run
SELECT
OM.operation_message_id
, OM.operation_id
, OM.message_time
, OM.message_type
, OM.message_source_type
, OM.message
FROM
SSISDB.catalog.operation_messages AS OM
WHERE
EXISTS
(
-- Find the last failing operation
-- lazy assumption that biggest operation
-- id is last. Could be incorrect if a long
-- running process fails after a quick process
-- has also failed
SELECT
MAX(OMI.operation_id)
FROM
SSISDB.catalog.operation_messages AS OMI
WHERE
OMI.message_type = 120
AND OM.operation_id = OMI.operation_id
);
您可以使用本机报告(所有执行)来查找包的失败执行。第一列,ID
是 operation_id,所以你可以用基本的 OM.operation_id = 10
替换 EXISTS 子句,如果你只想要错误,过滤 AND message_type = 120