我们有一个 SSIS 2012 包,它通过从外部数据库服务器提取数据来支持我们的内部分析报告数据库。
昨晚第一次尝试连接外部数据库时,由于数据库连接超时错误导致打包失败。
在我看来,通过某种方式在完全失败之前多次尝试连接来增强我们的 SSIS 包是有意义的。
例如,我们希望 SSIS 包尝试 3 次,可能在尝试重试之前休眠 5 分钟。如果有 3 次连接失败,则返回包的错误。
我已经搜索了这方面的参考资料,但我没有找到任何东西;似乎它应该是一个明显的特征,我一定没有找对地方。
以下是一些细节:
- 在本地 SQL Server 2012 服务器中使用 SSIS 2012 包。
- 从远程 Oracle 数据库中提取数据
- Attunity 使用 Microsoft Connector for Oracle
- 使用 SQL Server 代理从计划作业调用 SSIS 包
- SSIS 包具有非常简单的组件,包括一个截断表步骤和一个数据流任务。
- 数据流任务使用连接到 OLE DB 目标(我们的本地 SQL 服务器实例/数据库)的 Oracle 数据源组件。
- 有 1 个中间派生列组件,它将一些计算数据添加到目标。
- 该包已在我们的生产环境中成功运行多次,所以我已经知道这不是由于 SQL Server 中的开发/Visual Studio 与 SSIS 目录等原因。
我查看了我的外部 Oracle 数据库的连接管理器,也查看了 Oracle 数据源组件,但我没有看到任何支持重试的东西。
我应该使用 on-error 功能创建某种类型的重试循环吗?
这似乎有点矫枉过正,也许我需要将 Oracle 源组件中的某些属性放入配置中的某处?
有一种方法可以设置重试次数,并在 SQL 代理作业中设置每次尝试之间的间隔。只需打开作业并编辑作业步骤。点击高级链接。在那里,您可以设置重试尝试和重试间隔,如下所示。您还可以将包设置为从故障点重新启动。我个人没有这样做,但我确信有一个博客讨论它。这个可能有帮助。http://www.mssqltips.com/sqlservertip/1408/integration-services-checkpoints-to-restart-package-from-failure/