Sql server 作业失败。调度1016调用了该作业。要运行的最后一步是第1步
作业失败。调度1016调用了该作业。要运行的最后一步是第1步Sql server 作业失败。调度1016调用了该作业。要运行的最后一步是第1步,sql-server,ssis,Sql Server,Ssis,作业失败。调度1016调用了该作业。要运行的最后一步是第1步 当我尝试运行作业时收到一条失败消息,但当我使用SSIS运行时,包成功运行。我已经在谷歌搜索过了,但我找不到与代码1016相同的错误。请对此问题提供帮助。如评论所示,1016不是错误消息。相反,它是计划的标识符。这就是为什么你找不到关于它的另一个问题 让我们找出失败的工作是什么,以及它应该做什么 使用SSMS连接到相关服务器并运行以下查询 SELECT SJ.name AS JobName , JS.step_id ,
当我尝试运行作业时收到一条失败消息,但当我使用SSIS运行时,包成功运行。我已经在谷歌搜索过了,但我找不到与代码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列,则需要查看作业执行情况,以确定哪个作业失败
此查询将公开支持作业步骤定义的所有数据,因此您将查找步骤id=1的所有位置,因为您的错误消息指示要运行的最后一个步骤是步骤1,除非这是步骤名称的值,然后对此进行筛选
您指出SSIS包运行正常,因此应将命令列添加到您的问题中,以确定作业正在做什么,并为您运行包提供参考点
除此之外,proxy_name、credential_name、credential_identity(如果不为null)表示我们已经在适当的位置使用了credentialed proxy,这为标识包可能出错的位置添加了另一层
如果此包是从SSIDB执行的,那么您还需要将错误日志转储到问题中
-- 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是操作ID,这样您就可以用基本OM替换EXISTS子句。操作ID=10,如果您只需要错误,则筛选和消息类型=120似乎,1016不是错误代码,而是计划ID。我想,您可以尝试检查作业日志,查看实际的错误消息,我可以在哪里找到作业日志?实际上我已经签入了服务集成目录,但在报告中结果是成功的。SQL Server代理->作业->右键单击作业->查看历史记录