昨天和同事聊起来mysql和sqlserver 互通的事儿。在网上翻阅各种资料 ,都是各种各样零星的片段(可能这些都是大佬,没必要写的那么详细),小白的我一脸emo啊。
遂,测试完成后,整理了一下组织过程资产。
硬件:虚拟机,32G内存
软件:winserver2019 sqlserver2016
一、安装 mysql-connector-odbc-8.0.28-winx64.msi
下载地址:https://dev.mysql.com/downloads/file/?id=509492
点击安装后却提示 需要安装visualstudio
二、下载 Visual Studio Community 2019 for Windows x64
Visual Studio Community 2019 for Windows x64 下载地址:
https://visualstudio.microsoft.com/zh-hans/thank-you-downloading-visual-studio/?sku=Community&rel=16
三、安装 Visual Studio Community 2019 for Windows x64
此处我选择的是 Visual Studio扩展开发
一直等到进度条走完 即安装完成。
四、再次安装mysql-connector-odbc-8.0.28-winx64.msi
mysql-connector-odbc-8.0.28-winx64.msi 安装完成。
五、配置数据源
在控制面板内 找到管理工具 打开后 找到odbc 我选择的是 64bit
也可以直接在检索框内搜索ODBC
点击添加用户DSN
选择刚刚安装好的 MySql ODBC 8.0Unicode Driver
备注:
说明一下“MYSQL ODBC 8.0 ANSI Driver”和“MySQL ODBC 8.0 Unicode Driver”的区别:
①MySQL ODBC 8.0 ANSI Driver 只针对有限的字符集的范围;
②MySQL ODBC 8.0 Unicode Driver 提供了更多字符集的支持,也就是提供了多语言的支持。
备注:
Data Source Name: 数据源名称,自定义
Description:关于此数据源的描述,主要功能等,可不填写
TCP/IP Server:服务器名称,可以是机器名,也可以是IP地址;若是本地可填写“localhost”
Port:MySQL服务的端口号,默认是3306,也可在安装MySQL时自己设定
User:用户名,默认是root,也可在安装MySQL时自己设定
Password:密码
Database:数据库名称
数据源配置完成。
打开Microsoft SQL Server管理器,查看访问接口是否已经存在MSDASQL
备注:
MSDASQL 基于 ODBC,SQLOLEDB 是本机驱动程序,它们是用于连接 sql server 的不同方式。
ADO 和 OLE DB 提供程序
与 OLE DB 通信的 ADO 客户端需要 OLE DB 提供程序,这是一个使用 OLE DB 接口和方法来查询 SQL 数据源的动态链接库。对于 Microsoft® SQL Server™,可以使用两种类型的 OLE DB 提供程序:
Microsoft OLE DB Provider for SQL Server (SQLOLEDB),它直接将 OLE DB 接口和方法映射到 SQL Server 数据源。
Microsoft OLE DB Provider for ODBC (MSDASQL),它将 OLE DB 接口和方法映射到 ODBC API。 OLE DB 使用者通过现有的 SQL Server ODBC 驱动程序连接到 SQL Server 数据库。
我们建议使用随 SQL Server 提供的 SQLOLEDB 作为您的 OLE DB 提供程序。 SQLOLEDB 在 SQL Server 数据源上映射 OLE DB 接口和方法,而不使用 ODBC API 或 SQL Server ODBC 驱动程序作为中介。 ADO 介绍性 Visual Basic 示例应用程序(在 ADO 对象模型主题中的大多数代码示例中使用)使用 SQLOLEDB。
SQLOLEDB 和 MSDASQL 之间存在差异。这两个提供程序支持不同的连接属性,而 SQLOLEDB 不支持使用 ODBC DSN 连接。
六、创建链接服务器
EXEC master.dbo.sp_addlinkedserver
@server = N'Mysql_R',
@srvproduct=N'MySQL',
@provider=N'MSDASQL',
@datasrc=N'mysql-test',
@provstr=N'DRIVER={MySQL ODBC 5.2 UNICODE Driver};SERVER=192.168.1.225;Port=3306;DATABASE=sjcx;UID=root;PASSWORD=7758521;OPTION=3;'
此时查看数据库连接服务器,可以点击测试连接 测试是否连接成功。
七、测试连接是否可用 ,sqlserver 与 mysql 联查 测试
select a.id,mzh,yzmc
from [mysql-test].[sjcx]..[t1_log] a
join yjwzx_infos b on a.zxid=b.id
where a.id='113'
测试可用 。