澳门新萄京官方网站-www.8455.com-澳门新萄京赌场网址

Sql2000中OLEDB遍布式事务不能运行的解决方案,布

2019-08-10 作者:数据库网络   |   浏览(84)

前几日赶过一起有关布满式事务错误的案例,如下所示,实行SQL脚本时报错, 错误音信具体如下所示:

在支付遍布式数据库软件时,平日遭受下面包车型地铁荒谬:
服务器: 消息 7391,级别 16,状态 1,行 6
该操作未能实施,因为 OLE DB 提供程序 'SQ英雄联盟EDB' 不只怕起动分
布式事务。
[OLE/DB provider returned message: 不能在钦定的思想政治工作管理器中

适用条件

使用遍及式事务刚好能够减轻集群同期创新多台SQL SE讴歌RDXVE哈弗数据库,要么全体得逞,要么全部回滚的必要。

 

赢得新业务。]

服务器: 消息 8520,级别 20,状态 1,行 8
里头 MSDTC 事务的付出失利: Result Code = 0x8004d019。

操作系统:windows 二〇〇四

适用条件

原本微软早思量到此方面包车型地铁主题材料了。

[OLE/DB provider returned message: 新职业无法注册到钦命的政工管理器中。 ]

连日中断

招来了英特网类似主题素材的缓慢解决方案,都建议选择上边包车型客车法子(方法一):
1、运行 regedt32,浏览至 HKEY_LOCAL_MACHINE oftwareMicrosoftMSDTC。
丰富三个 DWO智跑D 值 TurnOff途锐pcSecurity,值多少为 1。
2、重启MS DTC服务。
3、张开“处理工科具”的“组件服务”。
a. 浏览至"运营处理工科具"。
  b. 接纳"组件服务"。
  c. 展开"组件服务"树,然后进行"小编的微型计算机"。
  d. 右键单击"我的Computer",然后选用"属性"。
  在 MSDTC 选项卡中,确认保证当选了下列选项:
网络 DTC 访谈 互连网管理 互联网事务XA 事务
其他,"DTC 登入帐户"必供给设置为"NT AuthorityNetworkService"。4、重启MS DTC服务。
5、再次运转 regedt32,浏览至 HKEY_LOCAL_MACHINE oftwareMicrosoftMSDTC,然后删除 TurnOff传祺pcSecurity 项。
唯独实际上该措施比较多消除不了难题,经过长日子的频频实施,小编终于按上面包车型客车法门化解了:
(方法二)
1、依据章程一的艺术管理贰遍,若是那多少个,再持续上边包车型大巴方式
2、安装windows 2002sp1,安装好后,方法一中的第4步设置对话框和原先差别等了,接纳“事务管理通讯”中的“不要求表明”
3、最佳安装好MDAC2.8

数据库:sql server 2000/sql server 2005

操作系统:windows 二零零三

下边背书,贴出微软官方网址下面的援救文书档案:

OLE DB error trace [OLE/DB Provider 'SQLOLEDB' ITransactionJoin::JoinTransaction returned 0x8004d00a].

3、通过寻找,在C:找到名称为“hosts”的文本(没有增添名),经常路径为C:WINDOWSsystem32driversetc,将对方服务器的IP和Computer对应起来,参谋如下:

# Copyright (c) 1993-1999 Microsoft Corp.
#
# This is a sample HOSTS file used by Microsoft TCP/IP for Windows.
# www.111cn.net
# This file contains the mappings of IP addresses to host names. Each
# entry should be kept on an individual line. The IP address should

选取链接服务器实行远程数据库访谈的景况

Sql2000中OLEDB遍布式事务不能运行的解决方案,布满式事务。数据库:sql server 2000/sql server 2005

布满式事务当先八个或五个名字为资源处理器的服务器。称为事务管理器的服务器组件必须在能源管理器之间谐和事务管理。假设布满式事务由

Msg 7391, Level 16, State 1, Procedure UpdatePermissionSystem, Line 18

一、  难点现象

在进行布满式事务时,在sql server 2007下收受如下错误:

消息 7391,级别 16,状态 2,过程 xxxxx,第 16 行

不可能推行该操作,因为链接服务器 "xxxxx" 的 OLE DB 访谈接口 "SQLNCLI" 不能运行分布式事务。

在sql server 两千下接受如下错误:

该操作没能实施,因为 OLE DB 提供程序 'SQ英雄联盟EDB' 不能运行遍及式事务。

[OLE/DB provider returned message: 新专门的学业无法注册到内定的事务处理器中。 ]

OLE DB 错误追踪[OLE/DB Provider 'SQLOLEDB' ITransactionJoin::JoinTransaction returned 0x8004d00a]。

 

动用链接服务器进行远程数据库采访的情事

Microsoft 布满式事务管理和睦器 (MS DTC) 之类的职业管理器或其余帮忙 Open Group XA 布满式事务处理标准的作业管理器来和睦,则在那

The operation could not be performed because the OLE DB provider 'SQLOLEDB' was unable to begin a distributed transaction.

二、  消除方案

一、  难点现象

在推行布满式事务时,在sql server 二〇〇六下接受如下错误:

消息 7391,级别 16,状态 2,过程 xxxxx,第 16 行

力不从心实行该操作,因为链接服务器 "xxxxx" 的 OLE DB 访谈接口 "SQLNCLI" 不恐怕运行遍及式事务。

在sql server 三千下收受如下错误:

该操作未能进行,因为 OLE DB 提供程序 'SQ英雄联盟EDB' 不能够运维分布式事务。

[OLE/DB provider returned message: 新专门的学问不能够注册到内定的作业管理器中。 ]

OLE DB 错误追踪[OLE/DB Provider 'SQ英雄联盟EDB' ITransactionJoin::JoinTransaction returned 0x8004d00a]。

 

样的分布式事务中,每一个 SQL Server 数据库引擎实例都可以当做财富管理器来运转。有关详细音信,请参阅 MS DTC 文档。
超越多个或五个数据库的单个数据库引擎实例中的事务实际上是遍及式事务。该实例对布满式事务实行内部管理;对于用户来说,其操作就如

 

1.        双方运营MSDTC服务

MSDTC服务提供遍布式事务服务,倘诺要在数据库中动用布满式事务,必须在加入的两端服务器运营MSDTC(Distributed Transaction Coordinator)服务。

二、  解决方案

本地工作一样。
对此应用程序来讲,管理布满式事务很像管制地方专业。当职业截止时,应用程序会央求提交或回滚事务。不相同的是,布满式提交必须由职业

  检查了数据库选项以及DTC配置,最终开掘是“事务管理器通讯”的选料未有选取“不要求开始展览表明(No Authentication Required)”,而是勾选了“须要相互举办身份验证(Mutual Authentication Required)”导致. 选取了“不须要开始展览认证” 后,重启DTC服务,就能够化解这些错误。

2.        张开双边135端口

MSDTC服务注重于RPC(Remote Procedure Call (RPC))服务,RPC使用135端口,保障RPC服务运维,假使服务器有防火墙,保险135端口不被防火墙挡住。  

  使用“telnet IP 135 ”命令测量试验对方端口是不是对外开放。也可用端口扫描软件(比方Advanced Port Scanner)扫描端口以咬定端口是或不是开放。

1.        双方运转MSDTC服务

MSDTC服务提供分布式事务服务,就算要在数据库中应用布满式事务,必须在参与的三头服务器运维MSDTC(Distributed Transaction Coordinator)服务。

管理器管理,以尽量幸免出现因互连网故障而形成职业由一些财富管理器成功交付,但由另一对财富处理器回滚的情形。通过分七个阶段(计划

 

3.        保障链接服务器中语句未有访谈发起事务服务器的操作

在倡导事务的服务器实践链接服务器上的询问、视图或存款和储蓄进度中富含访问发起事务服务器的操作,那样的操作叫做环回(loopback),是不被帮助的,所以要确认保障在链接服务器中空头支票此类操作。

2.        张开双边135端口

MSDTC服务依赖于RPC(Remote Procedure Call (RPC))服务,RPC使用135端口,有限帮忙RPC服务运行,假使服务器有防火墙,保险135端口不被防火墙挡住。  

  使用“telnet IP 135 ”命令测验对方端口是或不是对外开放。也可用端口扫描软件(比方Advanced Port Scanner)扫描端口以咬定端口是不是开放。

品级和提交阶段)管理提交进度可幸免这种意况,那称为两品级提交 (2PC)。
妄想阶段
当职业管理器收到提交央求时,它会向该事情涉及的有所能源管理器发送希图命令。然后,各类财富管理器将竭力使该业务一以贯之,并且存有保

 

4.        在专门的学业初叶前参加set xact_abort ON语句

对此绝大非常多 OLE DB 提供程序(包蕴 SQL Server),必须将隐式或出示事务中的数据修改语句中的 XACT_ABORT 设置为 ON。独一无需该接纳的图景是在提供程序扶助嵌套事务时。

3.        保障链接服务器中语句未有访谈发起事务服务器的操作

在提倡事务的服务器实践链接服务器上的询问、视图或存款和储蓄进程中包蕴访谈发起事务服务器的操作,那样的操作叫做环回(loopback),是不被支持的,所以要保管在链接服务器中官样文章此类操作。

存该事务日志影象的缓冲区将被刷新到磁盘中。当各个财富管理器完结计划阶段时,它会向事情处理器再次来到希图成功或筹划失败的音信。
付给阶段
万一职业管理器从持有财富管理器收到打算成功的新闻,它将向各样能源管理器发送叁个付出命令。然后,能源管理器就足以做到提交。若是

图片 1

5.        MSDTC设置

开垦“管理工科具――组件服务”,以此张开“组件服务――Computer”,在“笔者的Computer”上点击右键。在MSDTC选项卡中,点击“安全布局”开关。

在海东铺排窗口中做如下设置:

l         选中“网络DTC访问”

l         在客户端管住中当选“允许远程客户端”“允许远程管理”

l         在事务管理通信中选“允许入站”“允许出站”“不须要进行验证”

l         保险DTC登入账户为:NT   AuthorityNetworkService
图片 2

4.        在作业起初前步入set xact_abort ON语句

对于好多 OLE DB 提供程序(富含 SQL Server),必须将隐式或体现事务中的数据修改语句中的 XACT_ABORT 设置为 ON。独一无需该选拔的图景是在提供程序支持嵌套事务时。

具备财富管理器都报告提交成功,那么事务管理器就能向应用程序发送一个中标公告。假如任一财富管理器报告策动败北,那么事务管理器将

6.        链接服务器和称号深入分析难题

制造链接sql server服务器,平常有二种情景:

l         第一种景况,产品选”sql server”

EXEC sp_addlinkedserver

   @server='linkServerName',

   @srvproduct = N'SQL Server'

这种景色,@server (linkServerName)便是要链接的sqlserver服务器名大概ip地址。

l         第三种状态,访问接口选“Microsoft OLE DB Provider Sql Server”或“Sql Native Client”

EXEC sp_addlinkedserver  

   @server=' linkServerName ',

   @srvproduct='',

   @provider='SQLNCLI',

   @datasrc='sqlServerName'

这种气象,@datasrc(sqlServerName)正是要链接的实在sqlserver服务器名可能ip地址。

 

Sql server数据库引擎是因而位置安装的服务器名恐怕ip地址访谈链接服务器,DTC服务只通过劳动器名地址访谈链接服务器,所以要保证数据库引擎和DTC都能透过服务器名只怕ip地址采访到链接服务器。

数据库引擎和DTC分析服务器的格局不太同样,上边分别讲述

5.        MSDTC设置

开辟“管理工科具――组件服务”,以此张开“组件服务――Computer”,在“小编的微处理器”上点击右键。在MSDTC选项卡中,点击“安全体署”开关。

在安全安顿窗口中做如下设置:

l         选中“网络DTC访问”

l         在客户端管住中选中“允许远程客户端”“允许远程管理”

l         在事务管理通信中选“允许入站”“允许出站”“不须要开始展览认证”

l         保险DTC登入账户为:NT   AuthorityNetworkService
图片 3

向各种财富管理器发送二个回滚命令,并向应用程序注解提交退步。

6.1       数据库引擎

先是种意况的@server或然第几种意况的@datasrc设置为ip地址时,数据库引擎会依据ip地址访谈链接服务器,那时无需做名称分析。

率先种状态的@server或许第三种状态的@datasrc设置为sql server服务器名时,须要做名称深入分析,正是把服务器名深入分析为ip地址。

有三个方法解析服务器名:

一是在sql server客户端配置中安装二个别称,将下面的服务器名对应到链接服务器的ip地址。

二是在“C:WINDOWSsystem32driversetchosts”文件中追加一条记下:

xxx.xxx.xxx.xxx   服务器名

效果与利益同样是把劳动器名对应到链接服务器的ip地址。

6.        链接服务器和名称分析难点

树立链接sql server服务器,平常有二种情形:

l         第一种意况,产品选”sql server”

EXEC sp_addlinkedserver

   @server='linkServerName',

   @srvproduct = N'SQL Server'

这种意况,@server (linkServerName)就是要链接的sqlserver服务器名或然ip地址。

l         第三种状态,访问接口选“Microsoft OLE DB Provider Sql Server”或“Sql Native Client”

EXEC sp_addlinkedserver  

   @server=' linkServerName ',

   @srvproduct='',

   @provider='SQLNCLI',

   @datasrc='sqlServerName'

这种景观,@datasrc(sqlServerName)正是要链接的实际上sqlserver服务器名或然ip地址。

 

Sql server数据库引擎是因而地点安装的服务器名或然ip地址访谈链接服务器,DTC服务只通过劳动器名地址访问链接服务器,所以要确定保证数据库引擎和DTC都能透过服务器名大概ip地址访问到链接服务器。

数据库引擎和DTC深入分析服务器的办法不太一致,上面分别说述

行使 BEGIN DIST帕杰罗IBUTED TRANSACTION 语句运行显式遍及式事务。
调用规范的 Transact-SQL COMMIT TRANSACTION、COMMIT WOTiggoK、ROLLBACK TRANSACTION 或 ROLLBACK WOLANDK 语句来完毕工作。
对此任一 Transact-SQL 布满式事务,用于拍卖 Transact-SQL 脚本或一而再的数据库引擎实例将自动调用 MS DTC 来协和工作的交付或回滚。

6.2       DTC

随意哪类情状,只要@server设置的是劳务器名实际不是ip地址,就要求实行名称分析,办法同地点第三种艺术,在hosts文件中追加深入分析记录,下边包车型地铁第一种情势对DTC不起作用。

假设@server设置的是ip地址,一样无需做域名深入分析专业。

 

6.1       数据库引擎

率先种情景的@server只怕第二种情景的@datasrc设置为ip地址时,数据库引擎会依照ip地址访谈链接服务器,那时没有须要做名称分析。

第一种情景的@server大概第二种情形的@datasrc设置为sql server服务器名时,须求做名称解析,便是把服务器名剖判为ip地址。

有多少个法子深入分析服务器名:

一是在sql server客户端配置中装置贰个小名,将地方的劳务器名对应到链接服务器的ip地址。

二是在“C:WINDOWSsystem32driversetchosts”文件中加进一条记下:

xxx.xxx.xxx.xxx   服务器名

效率同样是把劳动器名对应到链接服务器的ip地址。

利用 OLE DB、开放式数据库连接 (ODBC)、ActiveX 数据对象 (ADO) 或 DB 库编写的应用程序能够运用 Transact-SQL 遍及式事务,方法是发

7.       远程服务器上的称号深入分析

遍布式事务的加入服务器是急需相互走访的,发起查询的服务器要基于机器名或ip查找远程服务器的,同样远程服务器也要索求发起服务器,远程服务器通过发起服务器的机械名查找服务器,所以要力保远程服务器能够通过发起服务器的机器名访谈到倡导服务器。

相似的,多个服务器在同一网段机器名能就行很好的辨析,可是也不保险都能很好的剖判,所以相比保障的做法是:

在长途服务器的在“C:WINDOWSsystem32driversetchosts”文件中加进一条记下:

xxx.xxx.xxx.xxx   发起服务器名

参考:

zjcxc(邹建)的消除方案 ()

微软How to troubleshoot error 7391 that occurs when you use a linked server in SQL Server

6.2       DTC

随意哪一类状态,只要@server设置的是劳务器名而不是ip地址,就须求举办名称解析,办法同地点第二种艺术,在hosts文件中追加分析记录,下面的第一种格局对DTC不起功效。

设若@server设置的是ip地址,一样无需做域名分析职业。

 

出 Transact-SQL 语句来运行和终止 Transact-SQL 分布式事务。OLE DB 和 ODBC 还带有在应用程序编程接口 (API) 等第对保管遍布式事务

7.       远程服务器上的名称剖析

布满式事务的涉企服务器是内需相互拜访的,发起查询的服务器要依照机器名或ip查找远程服务器的,同样远程服务器也要探求发起服务器,远程服务器通过发起服务器的机器名查找服务器,所以要有限支撑远程服务器能够通过发起服务器的机器名访谈到倡导服务器。

一般的,多少个服务器在同一网段机器名能就行很好的剖析,然而也不保障都能很好的深入分析,所以相比保证的做法是:

在远距离服务器的在“C:WINDOWSsystem32driversetchosts”文件中追加一条记下:

xxx.xxx.xxx.xxx   发起服务器名

 -----------------------------------------------补充------------------------------------------------------------------------------------------------------------------

1.Windows 防火墙例外选项卡上的增添Msdtc.exe 文件。私下认可状态下,该公文存款和储蓄在 < 安装驱动器 >: WindowsSystem32 文件夹

2.msdtc里,com 安全里,增添network service 访谈权限,并启用和激活权限

3.

  1. 增加为链接服务器运维 Microsoft SQL Server 两千的远程Computer。若要推行此操作在 Query 中运营下边包车型客车 TRANSACT-SQL 语句分析器:
    ``
    EXEC sp_addlinkedserver  '<remote_server>',  N'SQL SERVER' GO
    
**注意**替换 remote_server 必须被配置为链接服务器的计算机的名称。
  1. 此Computer和长途计算机之间运营布满式的事情。要实行此操作运营查询剖析器中的上面的TRANSACT-SQL 语句:
    ``
    SET xact_abort ON  GO USE  pubs GO BEGIN DISTRIBUTED TRANSACTION SELECT  *  FROM <remote_server>.pubs.dbo.authors COMMIT TRAN GO
    

 

 

的支撑。OLE DB 应用程序和 ODBC 应用程序能够利用那个 API 函数管理满含另外零件对象模型 (COM) 财富管理器(帮助 Microsoft 布满式

事务管理协和器 [MS DTC] 事务但不协理 SQL Server 数据库引擎)的布满式事务。它们也足以应用 API 函数获取对满含多台运转数据库引擎

实例的计算机的布满式事务边界的越来越多调整。

对不协助嵌套事务的提供程序的以下限制:唯有当 XACT_ABORT 选项设置为 ON 时,才允许在布满式事务中施行更新操作。

下边是一人长辈关于选择分布式事务的注意事项,一并贴出来:

适用条件

操作系统:windows 二〇〇二

数据库:sql server 2000/sql server 2005

行使链接服务器举办远程数据库访谈的意况

一、  难点现象

在实行分布式事务时,在sql server 2006下收受如下错误:

消息 7391,级别 16,状态 2,过程 xxxxx,第 16 行

不能实行该操作,因为链接服务器 "xxxxx" 的 OLE DB 访问接口 "SQLNCLI" 无法运营布满式事务。

在sql server 两千下收受如下错误:

该操作未能实践,因为 OLE DB 提供程序 'SQLOLEDB' 无法运转布满式事务。

[OLE/DB provider returned message: 新专门的学业不能够注册到钦点的政工管理器中。 ]

OLE DB 错误追踪[OLE/DB Provider 'SQ英雄联盟EDB' ITransactionJoin::JoinTransaction returned 0x8004d00a]。

 

二、  消除方案

1.        双方运行MSDTC服务

MSDTC服务提供布满式事务服务,如若要在数据库中运用遍布式事务,必须在参与的互相服务器运维MSDTC(Distributed Transaction Coordinator)服务。

2.        展开双边135端口

MSDTC服务依赖于RPC(Remote Procedure Call (RPC))服务,RPC使用135端口,保障RPC服务运营,要是服务器有防火墙,保障135端口不被防火墙挡住。  

  使用“telnet IP 135 ”命令测量检验对方端口是还是不是对外开放。也可用端口扫描软件(比方Advanced Port Scanner)扫描端口以判定端口是或不是开放。

3.        保障链接服务器中语句未有访谈发起事务服务器的操作

在发起事务的服务器实施链接服务器上的查询、视图或存款和储蓄进度中隐含访谈发起事务服务器的操作,那样的操作叫做环回(loopback),是不被帮助的,所以要力保在链接服务器中不设有此类操作。

4.        在业务起初前投入set xact_abort ON语句

对此抢先54% OLE DB 提供程序(包含 SQL Server),必须将隐式或显示事务中的数据修改语句中的 XACT_ABORT 设置为 ON。独一没有须要该选择的意况是在提供程序扶助嵌套事务时。

5.        MSDTC设置

开拓“处理工科具――组件服务”,以此张开“组件服务――Computer”,在“作者的微型Computer”上点击右键。在MSDTC选项卡中,点击“安全布局”按键。

在拉萨计划窗口中做如下设置:

l         选中“网络DTC访问”

l         在客户端管住中当选“允许远程客户端”“允许远程管理”

l         在事务管理通信中选“允许入站”“允许出站”“无需开始展览表达”

l         保险DTC登录账户为:NT   AuthorityNetworkService

图片 4 

6.        链接服务器和名称深入分析难题

创设链接sql server服务器,平时有二种状态:

l         第一种意况,产品选”sql server”

EXEC sp_addlinkedserver

   @server='linkServerName',

   @srvproduct = N'SQL Server'

这种意况,@server (linkServerName)正是要链接的sqlserver服务器名恐怕ip地址。

l         第三种情状,访谈接口选“Microsoft OLE DB Provider Sql Server”或“Sql Native Client”

EXEC sp_addlinkedserver  

   @server=' linkServerName ',

   @srvproduct='',

   @provider='SQLNCLI',

   @datasrc='sqlServerName'

这种景况,@datasrc(sqlServerName)就是要链接的实际sqlserver服务器名可能ip地址。

 

Sql server数据库引擎是透过地点安装的服务器名只怕ip地址采访链接服务器,DTC服务只透过劳务器名地址访谈链接服务器,所以要保障数据库引擎和DTC都能经过服务器名或然ip地址访谈到链接服务器。

数据库引擎和DTC剖析服务器的主意不太同样,上边分别说述

6.1       数据库引擎

先是种状态的@server或然第二种情景的@datasrc设置为ip地址时,数据库引擎会遵照ip地址访谈链接服务器,那时不供给做名称分析。

率先种情景的@server也许第三种情景的@datasrc设置为sql server服务器名时,须要做名称剖判,正是把服务器名深入分析为ip地址。

有四个议程分析服务器名:

一是在sql server客户端配置中安装贰个小名,将方面包车型大巴劳动器名对应到链接服务器的ip地址。

二是在“C:WINDOWSsystem32driversetchosts”文件中追加一条记下:

xxx.xxx.xxx.xxx   服务器名

作用同样是把劳务器名对应到链接服务器的ip地址。

6.2       DTC

任凭哪种情景,只要@server设置的是服务器名实际不是ip地址,就需求张开名称剖判,办法同地点第两种方法,在hosts文件中扩展分析记录,下面的率先种办法对DTC不起作用。

假定@server设置的是ip地址,同样不要求做域名分析专门的学问。

 

7.       远程服务器上的名号深入分析

分布式事务的涉企服务器是内需相互拜会的,发起查询的服务器要依赖机器名或ip查找远程服务器的,同样远程服务器也要物色发起服务器,远程服务器通过发起服务器的机械名查找服务器,所以要保管远程服务器能够因而发起服务器的机械名访谈到发起服务器。

貌似的,五个服务器在同一网段机器名能就行很好的分析,不过也不保证都能很好的分析,所以相比保证的做法是:

在长距离服务器的在“C:WINDOWSsystem32driversetchosts”文件中加进一条记下:

xxx.xxx.xxx.xxx   发起服务器名

本文由澳门新萄京官方网站发布于数据库网络,转载请注明出处:Sql2000中OLEDB遍布式事务不能运行的解决方案,布

关键词: