SSIS 传输对象任务超时

SSIS Transfer Object Task Timeout

我知道我不是唯一遇到 SSIS T运行sfer 数据库对象任务和超时问题的人,但是,在 ETL 的提取阶段使用它的人一定是什么相当普遍,所以我正在尝试确定执行此操作的 usual/accepted 方法。

我有一个使用 Entity Framework 生成 ~250 table 的 Web 应用程序,其中一些偶尔会有架构更新。

我们 ETL 的大部分 t运行s 表单和加载部分由一系列存储过程处理,但是,这些从应用程序的 tables 的副本中读取,这些副本最初是在 T运行sfer 数据库对象任务中加载。

最初,我们设置了一个 SSIS 程序包,它只是 运行 T运行sfer 数据库对象任务,然后启动了存储过程。这意味着作业对更改具有相当的弹性,并且唯一需要更改的是存储过程的更改,如果模式更新影响了其中使用的 tables。

不幸的是,随着我们的一个应用程序实例随着时间的推移而增长,T运行sfer 数据库对象任务已经到了我经常看到超时错误的地步。这些似乎不是连接超时,也不是我可以在服务器端控制的任何内容,据我所知,我无法修改该任务中底层 SMO 内容的 CommandTimeout。

我看到有些人手动制作他们的提取物,这样他们 运行 一个单独的数据流任务来从每个 table 中提取信息,这有一个明显的好处,即这些可以是运行 并行,但是,在我的例子中,这将意味着最初的大量工作来制作其中的 250 个左右,以及每当源数据库上的模式发生变化时的维护任务,无论多么小。

我遇到过 Biml,这看起来是一种至少可以减轻开销的可能方法,但是,在 VS2017 上似乎还不能 运行。

有没有人为此遵循任何特定的模式,或者如果我确实需要单独的数据流任务,是否有某种方法可以自动执行模式更新,也许使用某种 SSIS 自动化和 entity framework?

事实证明,解决此问题的最简单方法是编写 Transfer 任务的克隆,但要进行适当的添加以允许更好地控制批处理和超时等。本文提供了详细信息:https://blogs.msdn.microsoft.com/mattm/2007/04/18/roll-your-own-transfer-sql-server-objects-task/