Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Transactions SSIS删除然后插入:为保留的连接指定了不兼容的事务上下文_Transactions_Ssis - Fatal编程技术网

Transactions SSIS删除然后插入:为保留的连接指定了不兼容的事务上下文

Transactions SSIS删除然后插入:为保留的连接指定了不兼容的事务上下文,transactions,ssis,Transactions,Ssis,我正在开发一个SSIS包,它必须查询(执行SPs)源数据库几代,然后将这些代插入目标数据库 为此,我需要做一些检查:源数据库的生成是否已经存在于目标数据库中?如果没有,就插入它。如果确实存在,则自上次插入后是否进行了更新(又名:LastModified是否与DestinationDB中的同一代有所不同)?如果没有,就让它去吧。如果是,则更新目标数据库中的生成 我面临的问题与相关数据有关。不仅必须插入发电,而且还必须将每个相关项目插入目的地的表中(例如设备、包装等) 由于目标数据库是只读数据库,因

我正在开发一个SSIS包,它必须查询(执行SPs)源数据库几代,然后将这些代插入目标数据库

为此,我需要做一些检查:源数据库的生成是否已经存在于目标数据库中?如果没有,就插入它。如果确实存在,则自上次插入后是否进行了更新(又名:LastModified是否与DestinationDB中的同一代有所不同)?如果没有,就让它去吧。如果是,则更新目标数据库中的生成

我面临的问题与相关数据有关。不仅必须插入发电,而且还必须将每个相关项目插入目的地的表中(例如设备、包装等)

由于目标数据库是只读数据库,因此很容易通过删除生成(级联到其他表),然后再次插入生成来完成。一切都很顺利

现在,下一步是将事务包括在此工作流中(当我删除某些内容时,我必须插入新数据。如果失败,则需要回滚所有内容)。我已经将包的隔离级别设置为Serializable,将TransactionOption设置为Required。DestinationConnection已将RetainSameConnection设置为True

每当我尝试使用以前使用的相同数据调试包时,都会收到以下错误消息:

为保留的事务指定了不兼容的事务上下文 连接。此连接是在不同的模式下建立的 事务上下文。保留的连接可以在完全相同的条件下使用 一个事务上下文

在我看来,这是因为我尝试删除所有数据,然后将其重新插入同一事务中。SSI可能希望使用不同的连接(将RetainSameConnection设置为False可以解决问题),但我并没有想到这一点,除非一个连接失败,另一个连接也会回滚(但我已经了解到情况并非如此……)

有人能帮我指出正确的方向吗?感谢您的帮助


谢谢

归根结底是将我的连接的RetainSameConnection属性设置为false。我想我需要所有这些都在同一个连接上运行,但显然,情况并非如此。即使组件不经常在同一连接上运行,回滚似乎也能工作

格尔茨