如何解决无法在分布式事务中注册Sybase数据库的错误?

时间:2020-03-06 15:01:55  来源:igfitidea点击:

我对Sybase设置知之甚少(可以说一无所知),但是我确实知道SSIS在将Sybase纳入分布式事务中时遇到了麻烦。有人能做这项工作吗?

The SSIS Runtime has failed to enlist the OLE DB connection in a 
distributed transaction with error 0x80004005 "Unspecified error".

当我将包的TransactionOption更改为Required时,会发生这种情况。当我恢复为默认的"支持"时,程序包将运行而不会出现错误(尽管不是线程安全的)。

解决方案

当我尝试从Gupta SQLBase读取创建事务时,我遇到了同样的问题。基本上,SSIS(至少从2005年开始)似乎无法将任何其他提供程序注册为事务的一部分。我已经尝试了好几次都没有运气,通常我最终只是将OLEDB中的数据读取到临时表中,然后围绕将数据导入到SQL Server中的静态位置创建一个事务。那是读取的一面,但是,如果我们尝试使用事务写入SYBASE,则需要在该方面做一些事情,SSIS将无法使用事务将数据推送到另一个提供程序。

除此之外,我什至不希望我的事务扩展到Gupta,我只想在事务中的SQL Server端注册INSERT / UPDATE,以阻止用户读取半更新的数据,但SSIS拒绝允许我将流程包装在一个事务中,因为Gupta不支持它。似乎仅在某些提供程序上,或者仅在流程的"写"侧而不是"读"侧,就不支持事务。