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步的配置,问题解决。

时间: 2024-10-03 14:45:38

SQLServer2012连接mysql5.5的相关文章

Qt5连接Mysql5.7例子

Qt5连接Mysql5.7例子 : MysqlQt数据库 C++Qt框架(30)  . [cpp] view plain copy  <pre name="code" class="cpp">#include "mainwindow.h" #include "ui_mainwindow.h" #include<QSqlDatabase> #include<QDebug> MainWindow

delphi7连接mysql5一方法

今天开始研究mysql,在网上搜了一下资料,都是要安装这个,安装那个,很麻烦. 经过一直摸索.测试,得到一个快速的方法,很实用,只是稳定性有待发现. 先去下载:http://www.justsoftwaresolutions.co.uk/delphi/dbexpress_and_mysql_5.html 然后把下载到的dbxopenmysql5_dll.zip解压出来,再把dbxopenmysql50.dll和libmysql.dll都放到工程文件夹下. 在Form上放上TSQLConnecti

【Qt】Qt5.12连接MySQl5.7(亲自测试成功)

目录 00. 目录 01. Qt5.12连接MySQL5.7测试代码 02. Qt5.12连接MySQL5.7问题描述 03. 解决办法 04. 结果测试 05. 打赏 00. 目录 01. Qt5.12连接MySQL5.7测试代码 qDebug() << QSqlDatabase::drivers(); QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); db.setHostName("192.168.2

[很郁闷]python2.7连接mysql5.5配置

前言:今天在公司电脑上python版本跟自己家里电脑上的一样,不一样的是mysql公司版本5.6,结果花了两天的时间都没配置好python和mysql 简单说就是python连接mysql一直报2003错误,报错代码为:(2003, "Can't ,connect to MySQL server on 'localhost' (10061)" 网上百度了一天的时间仍未找到解决办法,貌似mysql5.6起,其配置变了,反正公司电脑上mysql服务启动后,通过cmd输入netstat -a

编译Qt5.0连接MySql5.5数据库的驱动(5.0版本的编译,我记得5.2开始自带了)

第一步 1.准备好Mysql数据库安装文件,Qt5.0完整的离线安装包,以及Qt5.0的完整的源代码.安装好程序,假设Mysql的安装路径为:C:\MySQL5.5,Qt5.0的安装路径:C:\Qt\Qt5.0.0-rc2\5.0.0-rc2,而Qt5.0的解压路径为:C:\Qt\qt-5.0.1-src. 注意事项:(1)安装mysql数据库的时候,网上很多教程说要选择自定义安装,并把lib和include这个选项选上.其实这个并不重要.因为我机器上很久前装mysql时选的是typical安装

VS2013下连接MySQL5.6小例

环境:win832系统,VS2013,MySQL5.6,boost1.60 需要注意的是,安装MySQL时需要安装完整版本,否则在MySql的目录下可能会没有Connector.C++ 1.1这个目录. boost下载后,直接解压即可.(我是放在C:\Program Files目录下),下载地址:http://www.boost.org/users/download/ 连接的方式有2种,一种是纯C风格的,不需要使用Connector.C++ 1.1目录下提供的内容.(个人觉得麻烦,代码看着乱,网

JAVA JDBC连接 SQLServer2012 连接失败 端口号错误

SQLServer2012的SQL Sever 网络配置 比SQLSever2008多了3个 为了能让java能连接,我将下面三个的协议都禁了,只启动SQLSERVER2012的协议 将SQLSERVER2012的协议 所有的tcp动态端口改为1433,IPALL的tcp动态端口什么都没有 重新启动sql服务 SQLServer2012 就能用java连接了

Linux下安装破解JIRA 6.3.6 并连接MYSQL5

序言 JIRA是澳大利亚 Atlassian 公司开发的一款优秀的问题跟踪管理软件工具,可以对各种类型的问题进行跟踪管理,包括缺陷.任务.需求.改进等.JIRA采用J2EE技术,能够跨平台部署.它正被广泛的开源软件组织,以及全球著名的公司使用. JIRA产品非常完善且功能强大,安装配置简单,多语言支持.界面十分友好,和其他系统如CVS.Subversion(SVN).VSS.LDAP.邮件服务整合得相当好,文档齐全,可用性以及可扩展性方面都十分出色,拥有完整的用户权限管理. 环境:jira软件:

thinkphp3.2 连接Mysql5 报错 服务器向客户端发送未知的字符集。

今天早上上班的时候,突然发现昨天好好的项目,今天报错了,具体错误信息为:SQLSTATE[HY000] [2054] Server sent charset unknown to the client. Please, report to the developers 翻译成中文为服务器向客户端发送未知的字符集,向开发商报告,第一反应是数据库字符集不对,检查过后发现,字符集是正确的.经过思考,把连接数据库配置文件中的localhost改成127.0.0.1, 问题解决. 这个问题多发生在mysq