链接服务器的 OLE DB 访问接口 "SQLNCLI" 无法启动分布式事务 外加SQL事务死锁问题

  这SQL作业一直每天都运行好好的,咋突然就不生效了?”

碰到这种突发问题,我心里是淡定的,事情不可能莫名发生的,因为是SQL作业问题,首先需要查看作业历史记录

果然一个大大的X明显的不要不要的,继续看错误内容:

  已以用户 NT AUTHORITY\NETWORK SERVICE 的身份执行。 事务(进程 ID 51)与另一个进程被死锁在 锁 | 通信缓冲区 资源上,并且已被选作死锁牺牲品。请重新运行该事务。 [SQLSTATE 40001] (错误 1205).  该步骤失败

死锁?,好好的事务咋会死锁了,查看前一天所有员工工作记录,发现没有任何人对这个作业里面的存储过程做过更改,保险起见,还是人工喊了句:“昨天有没人改XXX啊?” “木有哦” “改它有钱拿嘛” “XXX是啥?” 好吧,你们赢了,既然这个PRO(存储过程)没人动,那就是其他的事务挂了干扰了这里面的操作,从而导致死锁了,木办法,死办法了,看存储过程,一打开,不愧是别人写的代码,上千行啊,作为一个好久没看过代码的非主流程序员,压力无限大啊,压制住想吐的心理,查找所有对表发生更改的操作,筛选出可能受影响的表,再找员工工作记录(吐槽下员工工作记录非常重要),果然昨天有人对其中的表做了更改,于是找到对应的人,好吧,事情差不多明了,问题就出在这二货的代码上,对方表现的很无辜,“我测试过啊,代码运行正常,为什么自动执行就出错了,巴拉巴拉...”不吐槽程序员的失误了,继续定位问题:

问题发生情况:

在SQL存储过程中对其他服务器的SQL数据库进行操作,外加个前提:使用了事务

错误信息:

无法执行该操作,因为链接服务器 "xxxxx" 的 OLE DB 访问接口 "SQLNCLI" 无法启动分布式事务

      找了下资料,http://www.cnblogs.com/qanholas/archive/2013/05/15/3080013.html 大神们都是这种标答,标答不愧为标答,写的太详细了,考虑了各种情况,但是吐槽啊,内容太多,找到有用的信息好难,我这里对内容进行下筛选,问题基本就是服务器配置问题,解决方案如下,来个有图有真相吧:

  步骤一:进入服务器(那个出错的链接服务器),找到控制面板--管理工具--组件服务(知道命令行打开组件服务的就直接打开吧)

  步骤二:组件服务--计算机---我的电脑---右键---属性

  步骤三:属性窗口:选择MSDTC--安全配置

  步骤四:勾上下图那些圈圈,然后确认了(到这一步如果你发现没勾,那么恭喜你,勾上问题就解决了,如果发现已经勾上了,那么sorry,你只能按照上面大神的链接,一个个去排查了,GOOD LUCK!)

确认后,去执行出错的那个PRO,果然,错误没了,再测试下,没问题,注销服务器,收工,问题解决!

时间: 2024-10-11 10:17:04

链接服务器的 OLE DB 访问接口 "SQLNCLI" 无法启动分布式事务 外加SQL事务死锁问题的相关文章

没有活动事务 链接服务器的 OLE DB 访问接口 "SQLNCLI" 无法启动分布式事务

在windows2003下执行分布式事务的时候出现如下情况. 一. 问题现象在执行分布式事务时,在sql server 2005下收到如下错误: 链接服务器"xxxxxxx"的 OLE DB 访问接口 "SQLNCLI" 返回了消息 "没有活动事务.". 消息 7391,级别 16,状态 2,过程 xxxxx,第 16 行 无法执行该操作,因为链接服务器 "xxxxx" 的 OLE DB 访问接口 "SQLNCLI&

MSDTC问题集:链接服务器的 OLE DB 访问接口 "SQLNCLI" 无法启动分布式事务

尊重原著作:本文转载自http://sfwxw456.blog.163.com/blog/static/631359742009321112120248/ 一. 问题现象在执行分布式事务时,在sql server 2005下收到如下错误: 链接服务器"xxxxxxx"的 OLE DB 访问接口 "SQLNCLI" 返回了消息 "没有活动事务.". 消息 7391,级别 16,状态 2,过程 xxxxx,第 16 行 无法执行该操作,因为链接服务器

因为链接服务器 "IP" 的 OLE DB 访问接口 "SQLNCLI" 无法启动分布式事务

前言:A服务器和B服务器做好链接后,可以查询,但是用到Distributed Transaction就报错: 未处理的"System.Exception"类型的异常出现在 mes.exe 中. 其他信息: System.Data.SqlClient.SqlException: 服务器 'YICHANGMES' 上的 MSDTC 不可用.无法执行该操作,因为链接服务器 "" 的 OLE DB 访问接口 "SQLNCLI" 无法启动分布式事务 根据网

无法执行该操作,因为链接服务器 "xxxxx" 的 OLE DB 访问接口 "SQLNCLI" 无法启动分布式事务

在存储过程中使用事务,并且使用链接服务器时,报类似下面的错误 链接服务器"****"的 OLE DB 访问接口 "SQLNCLI10" 返回了消息 "没有活动事务.".消息 7391,级别 16,状态 2,过程 proc_SyncDiliveryData,第 20 行无法执行该操作,因为链接服务器 "*****r" 的 OLE DB 访问接口 "SQLNCLI10" 无法启动分布式事务. 度娘了很久,找到了

无法执行该操作,因为链接服务器 "XXX" 的 OLE DB 访问接口 "SQLNCLI10" 无法启动分布式事务。

在存储过程中使用事务,并且使用链接服务器时,报以下错误:   无法执行该操作,因为链接服务器 "XXX" 的 OLE DB 访问接口 "SQLNCLI10" 无法启动分布式事务. 链接服务器"XXX"的 OLE DB 访问接口 "SQLNCLI10" 返回了消息 "没有活动事务. 解决方法: 1.修改host设置,在C:\Windows\System32\drivers\etc下,在两台服务器分别添加对方计算机的IP

因为链接服务器 "SQLEHR" 的 OLE DB 访问接口 "SQLNCLI10" 无法启动分布式事务

1.运行 regedt32,浏览至 HKEY_LOCAL_MACHINE\Software\Microsoft\MSDTC. 添加一个 DWORD 值 TurnOffRpcSecurity,值数据为 1. 2.重启MS DTC服务. 3.打开“管理工具”的“组件服务”. a. 浏览至"启动管理工具". b. 选择"组件服务". c. 展开"组件服务"树,然后展开"我的电脑". d. 右键单击"我的电脑",然

无法创建链接服务器 "xxx" 的 OLE DB 访问接口 "OraOLEDB.Oracle" 的实例。 (Microsoft SQL Server,错误: 7302)

出现这个错误,有两个最常见的两个原因 1.注册表 <1>按下WIN+R,打开“运行”窗口,输入“regedit”,回车 <2>在打开的注册表编辑器的左侧按如下路径依次展开: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL.1\Providers 在Providers下面一般来说是看不到OraOLEDB.Oracle这一项的,于是新建这一项. 在Providers上面右键选择New -> Key,

关于【无法创建链接服务器 &quot;(null)&quot; 的 OLE DB 访问接口

SQL Server 2008读取EXCEL数据时,可能会报这个错误:无法创建链接服务器 "(null)" 的 OLE DB 访问接口 "MSDASC" 的实例. 1. 此错误主要是在使用代码读取数据时发生: insert into 数据库表名     select * from OpenDataSource ('Microsoft.Ace.OLEDB.12.0','Data Source="d:\Excel表名.xlsx";Extended p

导入导出数据库数据,报错,链接服务器&quot;(null)&quot;的 OLE DB 访问接口 &quot;Microsoft.Jet.OLEDB.4.0&quot; 返回了消息 &quot;未指定的错误&quot;。

在操作数据库中,我们难免会遇到导入和导出数据库中的数据问题,但有时用SQL语句操作时,就会报各种错误,比如下面这种错误. 错误各种找啊,最终解决,现总结原因如下: 1.未开启Ad Hoc Distributed Queries 服务: 开启方式和关闭方式如下: 1 --启用Ad Hoc Distributed Queries: 2 exec sp_configure 'show advanced options',1 3 reconfigure 4 exec sp_configure 'Ad H