无法启动分布式事务的解决方法

当运行分布式事务对 ANSI,并在从 SQL Server, 您可能收到错误消息, 它类似于以下:

服务器: 消息 7391, 级别 16, 状态 1, 行 1
因为 OLEDB 提供程序 ' SQLOLEDB ' 无法启动分布式事务不能执行该操作。 [: 无法指定事务协调中登记新事务 / OLE DB 提供程序返回消息 ] [ / OLE DB 提供程序'SQLOLEDB'ITransactionJoin::JoinTransaction 返回 0x8004d00a ] OLEDB 错误跟踪。


下列条件之一为真时可能会出现此问题:
启动分布式事务计算机上安装 Microsoft Windows Server 2003 或 Microsoft Windows XP Service Pack 2 (SP 2)。
Microsoft Windows Server 2003 or Microsoft Windows XP SP2 is installed on the remote computer that is running Microsoft SQL Server 2000, and that computer is linked to the computer that initiates the distributed transaction.

原因

此问题是由一个或多个以下原因:
对于网络事务禁用 Microsoft 分布式事务处理协调器 (MSDTC)。
计算机上启用 Windows 防火墙。 默认情况下, Windows 防火墙阻止 Microsoft 分布式事务处理协调器 (MSDTC) 程序。

注意 即使当关闭 Windows 防火墙可能出现此问题。

替代方法

警告 如果正确修改注册表通过注册表编辑器或通过其他方法可能发生 Serious 问题。 这些问题可能需要重新安装操作系统。 Microsoft 不能保证能够解决这些问题而。 修改注册表需要您自担风险。

要解决此问题, 按照这些步骤在计算机上 Windows Server 2003 或者 WindowsXPSP 上安装:
1. 确保 MSDTC 服务帐户 登录为 " 是 NetworkService 帐户。 要这样做, 请按照下列步骤操作:
a. 开始 , 依次 运行 。
b. 在 运行 对话框中, 键入 Services.msc , 然后单击 确定 。
c. 在 服务 窗口, 找到 DistributedTransactionCoordinator 服务 " 名称 " 窗格中。
d. 列, 登录为 " 下是否 登录为 " 帐户为 NetworkService 或 本地系统 。

如果 登录为 " 帐户是 NetworkService , 转到步骤 2。 如果 登录为 " 帐户是 本地系统 帐户, 继续步骤。
e. 开始 , 依次 运行 。
f. 在 运行 对话框中, 键入 cmd , 然后单击 确定 。
g. 在命令提示符下, 键入 网络停止 MSDTC 来停止 MSDTC 服务。
h. 在命令提示符下, 键入 Msdtc ûuninstall 要删除 MSDTC。
i. 在命令提示符下, 键入要打开注册表编辑器 regedit 。
j. 在注册表编辑器, 找到以下项:

HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/MSDTC注册表项。

删除该项。
k. 退出注册表编辑器。
l. 在命令提示符下, 键入 Msdtc ûinstall 要安装 MSDTC。
m. 在命令提示符下, 键入 Net 启动 MSDTC 来启动 MSDTC 服务。

请注意, 为 NetworkService 帐户设置 登录为 " MSDTC 服务帐户。
2. 启用 MSDTC 以允许网络事务。 要这样做, 请按照下列步骤操作:
a. 开始 , 依次 运行 。
b. 在 运行 对话框中, 键入 dcomcnfg.exe , 然后单击 确定 。
c. 在 组件服务 窗口, 展开 组件服务 , 展开 计算机 , 然后然后展开 我的电脑 。
d. 右键单击 本机 , 然后单击 属性 。
e. 在 我的电脑属性 " 对话框中, 单击 MSDTC 选项卡上 安全配置 。
f. 在 " 安全配置 对话框, 单击以选中 " 网络 DTC 访问 " 复选框。
g. 要允许分布式事务在此计算机上运行从远程计算机, 请单击以选中 " 允许入站 复选框。
h. 要允许要从此计算机, 远程计算机上运行分布式事务请单击以选中 " 允许出站 复选框。
i. 在 事务管理通讯 组, 单击以选择 否验证必需 选项。
j. 在 安全配置 对话框中, 单击 确定 。
k. 在 我的电脑属性 " 对话框中, 单击 确定 。
3. 配置 Windows 防火墙为包含 MSDTC 程序并包括作为例外端口 135。 要这样做, 请按照下列步骤操作:
a. 开始 , 依次 运行 。
b. 在 运行 对话框中, 键入 Firewall.cpl , 然后单击确定
c. 在 控制面板 , 双击 Windows 防火墙 。
d. 在 Windows 防火墙 对话框, 单击 例外 选项卡上 添加程序 。
e. 对话框中 添加程序 , 单击 浏览 按钮, 并找到 Msdtc.exe 文件。 默认, 文件存储在安装驱动器 > < : /Windows/System32 文件夹。
f. 在 添加程序 对话框中, 单击 确定 。
g. 在 Windows 防火墙 对话框, 单击以选中 MSDTC 选项 程序和服务 列表中。
h. 单击 " 例外 " 选项卡上 添加端口 。
i. In the Add a Port dialog box, type 135 in the Port number text box, and then click to select the TCP option.
j. In the Add a Port dialog box, type a name for the exception in the Name text box, and then click OK.
k. In the Windows Firewall dialog box, select the name that you used for the exception in step j in the Programs and Services list, and then click OK.
 

你可能感兴趣的:(sql,server)