SSIS平面文件插入无法回滚

SSIS平面文件插入无法回滚,ssis,Ssis,我有一个简单的SSIS包,它从平面文件读取数据并插入SQL数据库。该文件有90K行,有时由于数据包错误而失败,但它会在失败之前插入部分记录。我需要的是,如果在这段时间内插入失败,则不应将任何记录插入数据库,回滚所有记录。 如何将其放入事务中?您是否已在要放入事务中的包或容器上设置了transaction选项?单击容器(或控制面以选择整个包装),然后按F4键。确保相关容器设置为TransactionOption所需,或者包设置为Required且其中的容器设置为Supported。可用的Trans

我有一个简单的SSIS包,它从平面文件读取数据并插入SQL数据库。该文件有90K行,有时由于数据包错误而失败,但它会在失败之前插入部分记录。我需要的是,如果在这段时间内插入失败,则不应将任何记录插入数据库,回滚所有记录。
如何将其放入事务中?

您是否已在要放入事务中的包或容器上设置了transaction选项?单击容器(或控制面以选择整个包装),然后按F4键。确保相关容器设置为TransactionOption所需,或者包设置为Required且其中的容器设置为Supported。可用的TransactionOption值如下所示:

NotSupported指定不会为此容器启动任何事务,因此,如果当前事务的结果是由父容器启动的,则当前事务的结果不会影响在此容器执行期间可能更改的数据。这意味着即使父容器启动了事务,更改也不会回滚。
Required指定此容器将导致启动新事务,除非父容器已经有事务,在这种情况下,将加入父容器的事务。
Supported指定此容器不会启动事务。但是,如果父容器启动了一个事务,它将参与该事务。这是默认设置

上述TransactionOption值位于:
一个更好的方法(或者至少我会怎么做,不一定更好)是在平面文件读取部分添加一些数据检查。确保为VarChar、numeric等正确定义了变量。这样,它在读取时而不是插入时捕获变量

您还可以在读取和插入之间添加一些脚本检查


另一种选择是将数据插入临时表,然后在之后运行SQL语句,在插入生产表时使用事务。

谢谢大家。最后我得到了答案。 就我的实验而言,有两种方法 1.使用事务选项,但我在这里遇到了问题。这需要您的MSDTC服务运行,由于一些问题,我的SQl管理员无法让它为我运行,所以我想到了其他选择。
2.使用SQL Server处理事务。我使用了两个SQL任务,一个用于开始事务,另一个用于提交事务。要使其正常工作,我需要将SQL连接管理器的属性“RetainSameConnection”设置为True。这解决了我的问题。

是的,这就是SSI的本质。在SSIS中,有42种不同但有效的方法可以完成您想做的任何事情。