SSIS分布式事务错误“无法获取连接

时间:2013-01-09 16:43:02

标签: tsql transactions ssis

我正在使用SSIS内置事务。场景如下

Same Server上有两个数据库,我需要合并它们(INSERT / UPDATE) 我正在使用SQL Merge Clause这样做。主表很少,每个都有几个子表。合并语句首先在主表上运行,然后我有子表的ExecuteSQL任务。子表ExecuteSQL并行运行。

执行此操作时,我无法获取连接,并且在并行运行的ExecuteSQL任务之一上任务失败。无法弄清楚是什么原因。

RetainSameConnection设置为false,如果我将其设置为True,则表示“其他会话正在使用”事务上下文“错误。

据我所知,我不需要RetainSameConnection = True,因为它只在基于本地TSQL的事务中需要。 DTC已启用并正常工作。

并非所有任务都在我的包中失败,这表明它在并行任务上以某种方式失败地获取连接。

1 个答案:

答案 0 :(得分:0)

“无法获取连接”消息几乎总是由于您有一项任务在正确设置之前验证连接。

在大多数SSIS项目中,您的连接都绑定到本地数据库以进行开发。然后,您可以使用表达式,变量,脚本任务或类似的东西来设置运行时的实际连接。

当一个包开始执行时,每个“DelayValidation”属性设置为“False”(默认值!)的组件都会在执行任务之前尝试连接数据源,这意味着它会尝试连接到您在开发环境中设置的数据库,然后再更新它的属性......