zoukankan      html  css  js  c++  java
  • 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

    问题就解决。

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

    原文链接

  • 相关阅读:
    2016年3月iOS面试总结
    iOS常用公共方法
    让你的App说出多国语言——iOS开发之本地化(国际化)
    开发中遇到的坑
    Git简明教程
    iOS-打包成ipa的4种方法
    iOS-最全的App上架教程
    android 开源项目
    android 文件缓存工具类
    android 聊天通讯源码
  • 原文地址:https://www.cnblogs.com/OpenCoder/p/5814214.html
Copyright © 2011-2022 走看看