SQLServer出现 '其他会话正在使用事务的上下文' 的问题原因,什么是环回链接服务器?(转载)

本人经过百度查找并且自己进行测试得到问题原因:

MSDN上看了一下说是sql server 不支持在分布式事务处理中存在指向本地的链接服务器(环回链接服务器) 通过上面简单说明大家有可能没完全理解环回链接服务器的意思。下面直接来几段代码相信大家就明白了

1.打开本机SQL Server Management Studio工具,连接一个数据库服务器

这里使用本机数据库服务器。

2.在本机数据库服务器上建一个链接服务器连接的地址就是本机服务器,名称为 LS_Test。

3.假设本地数据库服务器下有

  数据库A

  数据库B

     数据库B中有dbo.Test表

4.在数据库A中创建如下存储过程

CREATE PROCEDURE [dbo].[PrPs_TestA]
AS
SET XACT_ABORT ON

BEGIN TRAN
    EXEC LS_TEST.B.dbo.PrTestB
COMMIT TRAN

5.在数据库B下创建如下存储过程

CREATE PROCEDURE [dbo].[PrTestB]
@OV_ReturnMss VARCHAR(128) OUTPUT
AS
BEGIN
    SELECT * FROM LS_TEST.B.dbo.Test
END

6.在数据库A下执行存储过程dbo.PrTestA

exec dbo.PrTestA

就会出现如下错误:

其他会话正在使用事务的上下文。

相信大家已经明白什么叫做环回链接服务器,当我们把数据库B中的存储过程dbo.PrTestB的链接服务器访问改成跨库访问,如:

SELECT * FROM B.dbo.Test

问题就解决。

所以各位以后在使用事务时一定要注意避免这个问题的发生,希望对各位有所帮助!

原文链接

SQLServer出现 '其他会话正在使用事务的上下文' 的问题原因,什么是环回链接服务器?(转载)

时间: 2024-10-19 20:41:10

SQLServer出现 '其他会话正在使用事务的上下文' 的问题原因,什么是环回链接服务器?(转载)的相关文章

使用系统存储过程来监控SQLServer进程和会话详解

 承接上文,本文讲述如何使用系统存储过程来监控系统. SQLServer同样也提供了一系列系统存储过程用于监控SQLServer,获取当前进程.会话.请求以及锁定的详细信息.本文将演示系统存储过程来实现这些监控. 情景: 有时候你会发现应用程序突然变得很慢,经常需要等待数据库响应,此时你需要快速查看是否请求被阻塞或者挂起. 准备工作: 在本文中,将使用以下存储过程来获取当前进程的信息: Sp_who Sp_who2 步骤: 1.  打开SSMS连到SQLServer实例并打开新查询窗口. 2

Sqlserver通过链接服务器访问Oracle的解决办法

转自http://blog.sina.com.cn/s/blog_614b6f210100t80r.html 一.创建sqlserver链接服务(sqlserver链接oracle)  首先sqlserver 链接oracle可以通过两个访问接口: “MSDAORA” 和“OraOLEDB.Oracle” 1.“MSDAORA”访问接口是由Microsoft OLE DB Provider for Oracle提供的,这里建议不使用此接口进行链接.通过该访问接口建立的链接服务器在进行查询orac

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

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

XenDesktop 5 SQL Server Mirror事务日志比较大的原因分析

在实施XenDesktop5项目过程中,发现XenDesktop5版本的数据库镜像事务日志很大,在XenDesktop4和XenApp版本中不存在该问题:于是我根据该现象探究XenDesktop5及以上版本镜像数据库事务日志为何如此之大以及我们今后实施的过程中该如何来维护这么庞大的数据库事务日志. 在XenDesktop解决方案中,对数据的处理是由专门的数据库来进行数据存储处理的,而对于数据库的高可用,有3种方式: SQL Mirror Virtual Machine HA(VMware FT)

没有活动事务 链接服务器的 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 行 无法执行该操作,因为链接服务器

【转】Sqlserver通过链接服务器访问Oracle的那些事儿!

原文:http://blog.sina.com.cn/s/blog_614b6f210100t80r.html 前言:1.不经历风雨,怎能见彩虹.2.充分利用BaiDu.google等搜索引擎查找资料并整合分析!3.世上无难事只怕有心人! 本文由来:笔者在研究SQLSERVER链接服务器到oracle并使用分布式事务时,出现各种各样的‘故障.异常’后,通过‘百度.google’等大量搜索引擎寻找解决问题无果,同时发现网上有大量的‘战友’牺牲在这道坎上,故发此文罗列出链接服务器出现的各种问题(本人

SqlServer Link 链接服务器的使用

1 --创建linked 2 exec sp_addlinkedserver 'a','','SQLNCLI','your ipaddress' 3 4 --登陆linked 5 exec sp_addlinkedsrvlogin 'a','false',null,'sa',123456' 6 7 8 --删除linked 9 exec sp_dropserver 'a','droplogins' 10 SqlServer Link 链接服务器的使用,布布扣,bubuko.com

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

”这SQL作业一直每天都运行好好的,咋突然就不生效了?” 碰到这种突发问题,我心里是淡定的,事情不可能莫名发生的,因为是SQL作业问题,首先需要查看作业历史记录 果然一个大大的X明显的不要不要的,继续看错误内容: 已以用户 NT AUTHORITY\NETWORK SERVICE 的身份执行. 事务(进程 ID 51)与另一个进程被死锁在 锁 | 通信缓冲区 资源上,并且已被选作死锁牺牲品.请重新运行该事务. [SQLSTATE 40001] (错误 1205).  该步骤失败. 死锁?,好好的