我正在使用一个 SSIS 包,它本身调用多个 SSIS 包并在执行期间定期挂起。
这是一个每天晚上运行一次的软件包,它从我们的人口普查数据库中收集新的和更改的记录,并将它们迁移到我们数据仓库的临时表中。每个维度都有自己的包,我们通过这个包调用。
所以,包裹看起来像
- 获取当前更改版本
- 加载上次更改版本
- 识别改变的价值观
- az - 将更改的记录移动到临时表(单独的包)
- 保存更改版本以供将来使用
所有这些都是执行 SQL 任务,除了移动记录任务有 20 个执行包任务(数据移动任务),它们在某种程度上是并行执行的。(一次最多四个。)
奇怪的是,当由 SQL 代理(使用代理用户)或 dtexec 执行时,它几乎总是失败,但当我通过 Visual Studio 运行包时,它从未失败。我添加了日志记录,以便我可以看到它停止的位置,但它是不一致的。
在我们的开发/培训环境中工作时,我们没有看到任何这些,但数据量要小得多。我想知道我们是不是一次做的太多了。
我可能 - 测试 - 通过 SQL Server 代理串行执行任务,看看是否是包调用包的问题,但我宁愿不这样做,因为我们晚上的时间相对较短七台数据库服务器。
我对 SSIS 有点陌生,所以任何建议都将不胜感激。
贾斯汀