Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 作业失败。调度1016调用了该作业。要运行的最后一步是第1步_Sql Server_Ssis - Fatal编程技术网

Sql server 作业失败。调度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 ,

作业失败。调度1016调用了该作业。要运行的最后一步是第1步


当我尝试运行作业时收到一条失败消息,但当我使用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代理->作业->右键单击作业->查看历史记录