• 【问题】如何解决sql server链接mysql后,使用分布式事务?


    通过SQL Server操作MySQL的步骤和方法

    在多种数据库环境下,经常会遇见在不同数据库之间转换数据和互相进行操作的情况。以下我简要说一下我用SQL Server操作MySQL的步骤和方法。

    【1】下载ODBC

    1 操作前的准备

    1.1 安装MySQL驱动

    想要在SQL Server中操作MySQL,首先要在SQL Server所在的服务器上安装MySQL的驱动。MySQL的驱动安装包在MySQL的官网上可以下载到,我下载到的安装包名为: mysql-connector-odbc-8.0.23-winx64,适用于64位的Windows服务器。双击安装包,直接[next]即可安装成功。安装成功后,在运行中输入[odbcad32.exe]打开[ODBC数据源管理器],点击[驱动程序]选项,可看到[MySQL ODBC 8.0 Unicode Driver]已安装成功。

    1.2 建立ODBC数据源

    安装好MySQL的驱动后就可以在SQL Server所在的服务器上建立指向MySQL服务器的ODBC数据源。

    在[ODBC数据源管理器]中选择[系统 DSN]选项卡,点击[添加]按钮。

    选择[MySQL ODBC 8.0 Unicode Driver],点击[完成]。

    在弹出的配置框中填写数据源名、MySQL服务器IP、端口、用户名和密码,点击[ok],ODBC数据源创建成功。

    【2】建立连接服务器

    1.3 建立链接服务器

    建立链接服务器有两种方式,可以通过SQL Server Management Studio中的向导建立,也可以直接使用SQL语句建立。

    1.3.1 使用向导建立链接服务器

    在SQL Server Management Studio中连接上SQL Server,然后在[服务器对象]->[链接服务器]上点击右键,选择[新建连接服务器(N)…]。

    在[链接服务器]框中填写自定义的链接服务器名称,[服务器类型]选择[其他数据源],[访问接口]选择”Microsoft OLE DB Provider for ODBC Drivers”,[产品名称]跟链接服务器名称填写成一样的,[数据源]填写刚才创建的ODBC数据源,点击[确定],链接服务器创建成功。

    其实,也可以不建立ODBC数据源,直接建立链接服务器的,只要把[数据源]留空,而在[访问接口字符串]中填写链接字符串

    “Driver={ MySQL ODBC 8.0 Unicode Driver };Server=192.168.0.77;Database=yxsys; User=root;Password=rootPassword88899999;Option=3;”即可。

    本人采用此方式建立的链接服务器

     

    【3】通过SQL Server操作MySQL

    MySQL数据库yxsys 中的数据表ims_ewei_shop_sale_orders的结构如下:

    操作该表的方法如下:

    2.1 查询MySQL中的数据
    
    select * from openquery(YNK,'select * from ims_ewei_shop_sale_orders');
    
    正常
    
    2.2 向MySQL表中插入数据
    
    insert into openquery(YNK,'select uniacid,ticket_num from ims_ewei_shop_sale_orders')
    
    select uniacid,ticket_num from ims_ewei_shop_sale_orders where shop_num=@shop_num and ticket_num=@ticket_num
    
    正常
    
    2.3 删除MySQL表中的数据
    
    delete from openquery(YNK,'select * from ims_ewei_shop_sale_orders')  where shop_num=@shop_num and ticket_num=@ticket_num
    
    正常
    
    2.4 修改MySQL表中的数据
    
    update openquery(YNK,'select * from ims_mc_members') set credit1=isnull(credit1,0)-isnull(@jf,0)          where uid=@uid
    
    正常

    总之,可以查询,可以在SQL SERVER中单独执行增删改可以正常执行

    但在存储过程中,增删改增加事务时就会报错

        

       

       

    将事务注释又可以进行增删改!!!

    【最终疑问】

    现在问题是sql server 通过链接服务器YNK访问mysql时,如何在事务中进行增删改保证数据一致性。

    【相关参考文档】

    相关问题:https://bbs.csdn.net/topics/392295925

  • 相关阅读:
    【Linux开发】linux设备驱动归纳总结(七):1.时间管理与内核延时
    【Linux开发】linux设备驱动归纳总结(七):1.时间管理与内核延时
    【Linux开发】linux设备驱动归纳总结(七):2.内核定时器
    【Linux开发】linux设备驱动归纳总结(七):2.内核定时器
    【Linux开发】linux设备驱动归纳总结(八):1.总线、设备和驱动
    【Linux开发】linux设备驱动归纳总结(八):1.总线、设备和驱动
    【Linux开发】linux设备驱动归纳总结(六):1.中断的实现
    【Linux开发】linux设备驱动归纳总结(六):1.中断的实现
    【Linux开发】linux设备驱动归纳总结(六):2.分享中断号
    【Linux开发】linux设备驱动归纳总结(六):2.分享中断号
  • 原文地址:https://www.cnblogs.com/gered/p/14407901.html
Copyright © 2020-2023  润新知