您能发布有关此声明的更多信息吗?
“随着数据的增长,作业A不能完成2,作业B启动失败”。
您的错误消息的详细列表将有所帮助。我想知道的是...
1)你的错误是由于硬件资源的限制吗?
或
2)它可以通过在SSIS加入Precedence Constraints到你的包来解决?
或
3)都发生了吗?
如果我承担,这个问题的一部分,至少可以通过在SSIS包添加优先约束,往往一个跑进情况需要解决的时刻是这样的:
我有细上运行的几个包他们自己就像是单独运行时一样。然而,当他们一起跑时,他们并不会很好地相处。还有什么我真的没有心情,也没有时间我需要重新设计/重构这几个包作为一个具有所需优先约束的大包。
发生这种情况时,该解决方案提出了自己:
- 创建一个新的“父”包
- 添加Execute Package tasks到父包打电话给你的孩子包
- 使用优先约束,约束每个孩子软件包运行的硬件资源允许和数据模型要求的并行度如下或更少
This Parent pa ckage将在其中有没有数据流任务。而是唯一的目的是管理控制流程逻辑。如果这给了你所需要的性能,而不是简单地将它用作真正需要完成的包重构的工作,那么这是一个可行的选择。确定这是一个试验和错误的问题,以使其“正确”。
一般来说,我会说我比较喜欢把复杂的SQL Server代理作业作为主控制包,因为我觉得SSIS配置比较简单,给你更多的灵活性,这种方法允许你封装你的ETL逻辑在SSIS中,而不是通过SSIS和SQL Server Agent进行分发。对于我的很多ETL任务,我对SQL Server代理的使用已经归结为调度和一个调用控制流主题Parent包的简单步骤。
我想说,使用单独的临时表作为解决问题的一种方法也值得研究。这是数据模型专家最关心的一个数据模型问题。如果您当前的数据模型不允许并行运行包,那么该方法可以提供帮助(例如,多个进程通过批量插入将数据同时插入到同一个表中)。但是,如果性能的根本问题是硬件资源约束,那么多个临时表解决方案并不是一个好选择。
我想最终会找到最佳性能,您可能最终会使用这两种解决方案的混合,并可能为您的ETL请求额外的硬件资源。
很难知道什么建议没有更多的细节问题。希望这可以帮助。
你可能想要实现某种代理链接 - http://dba.stackexchange.com/questions/3605/chaining-sql-server-agent-jobs – OnoSendai
我同意OnoSendai。如果服务器核心允许,尽快使用Parallelism(可能的话):http://technet.microsoft.com/en-us/library/dd795221(v=sql.100).aspx –