自定义SSIS组件中的事务对象执行方法

时间:2011-01-26 13:42:00

标签: transactions ssis task

我用谷歌搜索,我砰的一声,我看起来很高。

我正在寻找一个示例,说明如何使用传递给自定义任务的Execute方法的object类型的事务变量。

我注意到当我有一个事务对象时,它的类型为System .__ ComObject。

我需要具体做的是将事务传递给webservice。 Web服务在打开连接时以某种方式注册此事务,运行sql。如果软件包进一步失败,那么这个问题就是在webservice回滚中有sql。现在DTC已启用,如果自定义任务失败,程序包确实回滚但是如果一个自定义任务成功而另一个自定义任务失败,则仍会提交自定义任务工作。

现在如果不能在Execute方法之外使用它,我想我可以将webservice代码带入Execute方法

要提供一些历史记录,我必须创建自定义Web服务任务,因为内置的不支持身份验证。

CredentialCache with IIS vs personal development server

1 个答案:

答案 0 :(得分:1)

内置的SSIS连接管理器在其“AquireConnections”调用中支持此事务对象(有关详细信息,请参阅http://msdn.microsoft.com/en-us/library/microsoft.sqlserver.dts.pipeline.pipelinecomponent.acquireconnections.aspx)。

然而,它几乎肯定只是指向某种非托管事务对象的指针,而SSIS似乎没有为它提供托管包装(即通过DtsConvert)。

但是我再退一步,问问自己,当你得到它时,你认为你会做什么。在事务中注册Web服务并非易事。从理论上讲,支持ws-transactions的web服务可以注册(WCF提供对此的支持:http://msdn.microsoft.com/en-us/library/ms729784.aspx,但是你正在调用的web服务吗?),但实际上我认为我总是尝试避免这种情况,而是注册一些其他本地事务资源,而不是以可靠的方式获取您的消息。就像数据库中的“发件箱”表一样。或MSMQ。

这将是一个更可靠的解决方案,在您的情况下,更容易注册交易。