为什么SSIS运行时无法启动分布式事务?

13
在为SQL Server 2008创建SSIS包时,我遇到了以下错误:

错误:由于错误0x8004D01B“事务管理器不可用”,SSIS运行时未能启动分布式事务。DTC事务启动失败。这可能是因为MSDTC服务未在运行。

我在本地创建和运行包,但数据库在运行Windows Server 2008的服务器上,该服务器不在域中。我确保DTC服务在本地和服务器上都已启动,并添加了Windows Vista防火墙中预定义的防火墙例外。为什么SSIS Runtime无法启动分布式事务?

1
参见:https://dev59.com/il0b5IYBdhLWcg3wQPRN 在我们的情况下,是一个愚蠢的第三方服务干扰了。 - Mark Sowul
2个回答

11

我曾经也遇到过相同的问题,但是我的机器上未运行MS DTC。要启动事务协调器,我需要按照以下步骤进行:

启动 MS DTC

  1. 要打开服务,请单击“控制面板”选项卡中的“开始菜单”。
  2. 在控制面板中,单击“管理工具”。
  3. 在管理工具中,单击服务。在服务列表中,单击“分布式事务协调器”的详细信息。
  4. 在操作菜单中,单击“启动”。

1
这是我第二次谷歌并回到这篇解决了我的问题的帖子。有人知道为什么会发生这种情况吗?或者我该如何确保将来停止它? - Sam

6

在这里查看我对此问题的解决方案 [ 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选项卡 >> 单击安全配置。下面是我使用的设置的屏幕截图,但我不建议对所有情况使用此配置,因为我不知道它对安全性可能产生的影响。

Screen shot


感谢安德鲁的努力。我的博客早已荒废。我刚从网络上下载了一张图片,它具有同样的作用。 - Faiz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接