小编Ryo*_*oku的帖子

SSIS数据流任务依赖于超前阶段的执行

我有一个暂停执行的数据流任务.
流程很简单,对不同的表进行两次查询(两者都有几个连接),然后通过公共id对输出进行排序和合并,为所有记录添加静态列,将行计数保存在用户变量中以供日后使用使用并最终插入到另一个DB上的表中.我们正在使用OLE DB源和目标.源是MSSQL 2000,目标是MSSQL 2012

症状:

  • 在执行时,数据流获得通常的黄色"运行"图标.但是,当您双击以查看数据流时,非元素具有任何黄色,红色或绿色标记.
  • 这种情况持续很长一段时间,最初持续了大约20分钟,之后开始变长或根本没有返回.
  • 输出显示:
    信息:Load Sandbox Table中的0x40043006,SSIS.Pipeline:准备执行阶段正在开始.
    信息:Load Sandbox表中的0x40043007,SSIS.Pipeline:预执行阶段正在开始.

    除了停止执行之外别无其他.
  • 是的,这已经奏效了.是的,我们使用单个查询(在存储过程中)来执行此ETL,但我们希望将所有步骤迁移到SSIS.
  • 解决方案失败:

  • 没有查找.
  • 任务流的默认缓冲区大小增加到40485760,然后增加到80971520.
  • 任务的默认缓冲区最大行数设置为1000000.
  • 对于该任务,延迟验证设置为True.
  • 任务中的所有元素都将Validate External Data设置为False.
  • 两个查询都有:
    SET FMTONLY OFF;
    设置NOCOUNT ON;

    在开始时加入.
  • 两个查询都将MAXDOP设置为1.
  • 将项目的运行64位运行时设置为False.
  • 将目标负载从表或视图更改为表或视图 - 快速加载,没有锁或约束.
  • 将每批次的行设置为1000以便快速加载.
  • 一些解决方案建议将任务流分成两个或更多任务流.但这是不可能的,因为我们需要做的是合并两个源查询中的信息.
  • 额外的一点: 我真的希望有人可以帮助我.我是SSIS的新手,这是我第一次使用它.我通常与Pentaho合作开发我的ETL,但客户需要在SSIS上实施解决方案.我已经和这个问题争斗了好几天了,而且我已经开始没有想法来解决这个问题了.


    当通过命令行运行时,它也会卡住,我得到以下输出:

    Progress: 2013-03-19 14:36:26.21
       Source: Load Sandbox Table
       Validating: 0% complete
    End Progress
    Progress: 2013-03-19 14:36:26.21
       Source: Load Sandbox Table
       Validating: 12% complete
    End Progress
    Progress: 2013-03-19 14:36:26.22
       Source: Load Sandbox Table
       Validating: 25% …
    Run Code Online (Sandbox Code Playgroud)

    sql-server ssis etl

    27
    推荐指数
    3
    解决办法
    5万
    查看次数

    标签 统计

    etl ×1

    sql-server ×1

    ssis ×1