zoukankan      html  css  js  c++  java
  • SQLServer2012连接mysql5.5

    网站由于历史原因,使用了sqlserver和mysql两种数据库,数据库版本是SQLServer2012和MySql5.5,两库间交换数据以前都是走的接口,太麻烦。一下子把mysql迁移到sqlserver也不太合适,于是就想通过数据库连接的形式让sqlserver侧可以直接访问mysql的数据。

    从网上东拼西凑,一步步搞通了,整理如下:

    一、从mysql网站上下载ODBC驱动

    http://dev.mysql.com/downloads/connector/odbc/

    找到合适自己操作系统的版本下载并安装,我的是WINDOWS64位版本,

    二、配置ODBC数据源

    打开【管理工具】—>【数据源(ODBC)】,选择【系统DSN】,点击【添加】,选择【MySQL ODBC 5.3  Unicode Driver】,完成

    输入自定义的数据源名称XXX和描述,输入要连接的mysql服务器ip地址/端口/用户名/密码及数据库实例名,点击test,测试成功,OK。

    三、配置数据库链接

    打开sqlserver management studio,选择【服务器对象】,右击【链接服务器】,选择【新建链接服务器】,

    【常规】选项卡中输入自定义的服务器链接名称,选择【其它数据源】

    【提供程序】项,选择【Microsoft OLE DB Provider For ODBC Drivers】,别选错

    输入产品名称(自定义)、数据源名称(上一步定义的名称XXX)

    【安全性】选项卡,选择【使用此安全上下文建立连接】,输入远程登录用户名和密码

    确定!

    如果没有报错,刷新【链接服务器】节点,右击新增的链接名称,选择【测试链接】,没有问题。

    四、使用:

    1、OPENQUERY方式;

    SELECT *  FROM  OPENQUERY(dblink名称, 'select   *   from t_table');

    2、OPENROWSET方式;

    先打开OPENROWSET:

    exec sp_configure 'show advanced options',1
    reconfigure
    exec sp_configure 'Ad Hoc Distributed Queries',1
    reconfigure;
    
    执行示例:
    
    SELECT * FROM OPENROWSET(
    'MSDASQL',
    'DRIVER={MySQL ODBC 5.3 Unicode Driver};
    SERVER=111.222.222.111;
    PORT=3306;DATABASE=mysqldb;
    USER=root;PASSWORD=xxxyyyzzz;
    STMT=set names gb2312;
    OPTION=2049',
    'select * from t_table;'
    )
    go;

    第三步可能会报一个错误:

    [MySQL][ODBC 5.3(w) Driver]Connection using old (pre-4.1.1) authentication protocol refused (client option 'secure_auth' enabled)"。 (Microsoft SQL Server,错误: 7303

    这是数据库版本对密码加密方式不同引起的,解决:

    打开mysql数据库的mysql示例,打开user表,可以看到链接使用的用户名root和密码,

    同为root用户,加密后的密码串明显不同。把长的那串复制出来,替换掉短的,提交修改。

    PS:网上有说法执行update `user` t set t.`Password`=PASSWORD(xxxyyyzzz) where t.`User`='root' and t.`Host`='111.222.222.111',我试了不能生效,仍然使用的旧加密方式生成的仍然是短密文。

    然后记得执行FLUSH PRIVILEGES语句,刷新权限信息。

    再次到SQLServer执行第3步的配置,问题解决。

  • 相关阅读:
    uva 10269(floyd+Dijkstra)
    Codeforces Round #223 (Div. 2) 解题报告
    uva 11280(Dijkstra+递推)
    uva 10246(变形floyd)
    闲来无事:跳台阶
    opencv和javacv版本不一致
    javaCV:爱之初体验
    mevan引入容联云通讯jar
    复杂度函数的表示
    MySQL与mabits大小比较、日期比较示例
  • 原文地址:https://www.cnblogs.com/msony924840/p/4424410.html
Copyright © 2011-2022 走看看