网站由于历史原因,使用了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步的配置,问题解决。
总结以上是内存溢出为你收集整理的SQLServer2012连接mysql5.5全部内容,希望文章能够帮你解决SQLServer2012连接mysql5.5所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)