我在本地创建和运行包,但数据库在运行Windows Server 2008的服务器上,该服务器不在域中。我确保DTC服务在本地和服务器上都已启动,并添加了Windows Vista防火墙中预定义的防火墙例外。为什么SSIS Runtime无法启动分布式事务?错误:由于错误0x8004D01B“事务管理器不可用”,SSIS运行时未能启动分布式事务。DTC事务启动失败。这可能是因为MSDTC服务未在运行。
我在本地创建和运行包,但数据库在运行Windows Server 2008的服务器上,该服务器不在域中。我确保DTC服务在本地和服务器上都已启动,并添加了Windows Vista防火墙中预定义的防火墙例外。为什么SSIS Runtime无法启动分布式事务?错误:由于错误0x8004D01B“事务管理器不可用”,SSIS运行时未能启动分布式事务。DTC事务启动失败。这可能是因为MSDTC服务未在运行。
我曾经也遇到过相同的问题,但是我的机器上未运行MS DTC。要启动事务协调器,我需要按照以下步骤进行:
启动 MS DTC
在这里查看我对此问题的解决方案 [ http://faiz.kera.la/2009/08/26/ssis-transaction-enabled-tasks-fail-due-to-msdtc ]
如果您的机器不在域中或运行Windows XP,则这是常见的情况。
编辑:链接已失效。链接的原始文本似乎是:
在我的当前项目中,我们有多个SSIS开发人员,我们都在我的系统中共享数据库服务器实例。昨天,当一个团队成员尝试在SSIS中实现事务时,我们遇到了一个问题。尽管该软件包在我的系统中(即数据库所在的系统)运行良好,但在其他机器上失败。抛出的错误消息是:
The SSIS Runtime has failed to enlist the OLE DB connection in a distributed transaction with error 0x8004D00E “The transaction has already been implicitly or explicitly committed or aborted”
很快我们意识到这与Microsoft Distributed Transaction Coordinator (MsDTC)有关。我们进行了一些搜索,并得到了一个名为“Dtcping.exe”的工具,该工具将检查不同机器中MsDTC进程的健康状态。该工具报告了一个错误“拒绝访问”,暗示MsDTC中存在某些安全问题。但是,即使经过了几个小时的谷歌搜索,我们也没有运气。然后我决定倾斜MsDTC的安全设置,并发现所有与网络相关的连接性默认都已禁用。我得知认证设置可能会引起麻烦,因为我们的机器正在运行Windows XP并且它们处于工作组中(我们在我的组织中有一个奇怪的网络配置)。我在所有机器上将MsDTC实例更改为“不需要身份验证”,然后它就可以正常工作了!要更改MsDTC的安全配置,请转到控制面板 >> 管理工具 >> 组件服务 >> 计算机 >> 右键单击我的计算机,然后单击属性 >> 单击MSDTC选项卡 >> 单击安全配置。下面是我使用的设置的屏幕截图,但我不建议对所有情况使用此配置,因为我不知道它对安全性可能产生的影响。