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

Tsql SSIS分布式事务错误“;无法获取连接,tsql,transactions,ssis,Tsql,Transactions,Ssis,我正在使用SSIS内置事务。场景如下 同一服务器上有两个数据库,我需要合并它们(插入/更新) 我正在使用SQLMERGE子句来实现这一点。主表很少,每个表都有几个子表。Merge语句首先在主表上运行,然后我为子表执行ExecuteSQL任务。子表ExecuteSQL并行运行 执行此操作时,我无法获取连接,并且任务在并行运行的ExecuteSQL任务之一上失败。无法找出原因 RetainSameConnection设置为false,如果我将其设置为True,则会出现“另一个会话正在使用事务上下文”

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

同一服务器上有两个数据库,我需要合并它们(插入/更新) 我正在使用SQLMERGE子句来实现这一点。主表很少,每个表都有几个子表。Merge语句首先在主表上运行,然后我为子表执行ExecuteSQL任务。子表ExecuteSQL并行运行

执行此操作时,我无法获取连接,并且任务在并行运行的ExecuteSQL任务之一上失败。无法找出原因

RetainSameConnection设置为false,如果我将其设置为True,则会出现“另一个会话正在使用事务上下文”错误

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

在我的包中,并不是所有任务都失败,这表明它通过在并行任务中失败而成功地获得了连接

出现“获取连接失败”消息几乎总是因为您有一个任务在正确设置连接之前验证连接

在大多数SSIS项目中,出于开发目的,您的连接都绑定到本地数据库。然后,您可以使用表达式、变量、脚本任务或类似的内容在运行时设置真正的连接


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

如果我按顺序运行所有子合并语句,它将正常工作。没有人愿意尝试使用
sql profiler
并检查导致问题的查询。我认为由于表锁,您的并行子任务在获取连接时遇到问题SQL profiler没有显示任何内容。看起来Quer在失败时不会转到SQL Server