【问题标题】:How can I wait for an SSIS package to complete如何等待 SSIS 包完成
【发布时间】:2013-05-14 14:07:02
【问题描述】:

我有一份 SQL 代理工作。作业的第一步是运行一个 SSIS 包,将 .txt 文件中的数据加载到 SQL 表中。作业中的下一步操作刚刚加载到表中的数据,直到最终用结果刷新 Excel 中的表。 我遇到的问题是,在继续进行工作的第 2 步之前,该工作似乎没有等待 SSIS 包完成,所以有时它工作正常,有时它在数据加载到表之前开始数据操作并给出不正确的结果。在继续之前,我怎样才能让工作等待 SSIS 包完成?

【问题讨论】:

  • 您没有在 SSIS 包本身中执行数据操作和加载到 excel 中的任何原因?
  • 好吧,实际发生的是用户在 excel 中单击一个按钮,该按钮将工作表另存为文本文件,触发存储过程,该过程触发在 txt 文件中加载的作业...当完成它会在 excel 中选择一个不同的选项卡并刷新那里的现有查询。我不确定如何在 SSIS 包中处理对 excel 的控制。我以前通过访问完成过,但从未使用过 SQL。
  • 我个人会在 SSIS 包中完成所有这些工作。但是在工作中,您需要先设置好第一步才能迈向成功的第二步。
  • 我会很好地在 SSIS 中完成这一切,我只是没有将 SSIS 用于除数据流任务之外的任何其他任务。如何通过它控制打开的 Excel 工作表?而且我确实设置了所有步骤完成事件,问题是似乎启动 SSIS 被认为足够完整,可以继续下一步。

标签: sql ssis


【解决方案1】:

您是否在 SQL Server 2012 中运行此程序? IS 目录包有一个特定参数,称为 SYNCHRONIZED,如果设置为 false,则认为包执行步骤在包启动后立即成功。

要查看您的作业正在执行的各种命令,请在运行您的作业的服务器上运行此查询:

select step_id, step_name, subsystem, command from msdb.dbo.sysjobsteps js
inner join
msdb.dbo.sysjobs j
on j.job_id = js.job_id
where
j.name = <Your Job Name Here>
order by step_id

如果你没有看到

/Par "\"$ServerOption::SYNCHRONIZED(Boolean)\"";True

在命令字段中,这意味着它正在异步运行,并且您的下一步将在包开始执行后立即开始。

我知道修复它的唯一方法是直接在 dbo.sysjobsteps 表中修改作业步骤的命令字段,使用 sp_update_jobstep 存储过程,或者使用 GUI 删除并重新添加您的步骤。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多