通过ODBC实现SQLserver访问MySQL

516 阅读2分钟

前言

如果你的程序使用的是MySQL数据库,由于特殊原因需要在SQLserver数据库当中读取MySQL的内容。

那么这篇文章也许能够帮助到你。

首先,阅读该文章的前提是SQLserver数据库需要安装在Windows系统当中。SQLserver在Linux版本当中不支持访问其它类型的数据库。

截屏2023-03-08 20.13.50.png

更多详细说明可以访问 Editions and supported features of SQL Server 2019 - Linux - SQL Server

1. ODBC驱动安装

以Windows系统为例,在已经安装SQLserver数据库的情况下,需要在SQLserver所在服务器上安装mysql-connector-odbc驱动。驱动下载地址:dev.mysql.com/downloads/c…

2. 配置ODBC数据源

在Windows系统中配置MySQL的ODBC数据源,配置路径:控制面板 - 管理工具 - ODBC数据源。 在系统DSN中添加MySQL数据库,SQLserver的链接服务器从系统DSN中读取ODBC配置。必须维护在系统DSN当中。

截屏2023-03-08 20.34.54.png

image.png

3. 新建SQLserver链接服务器

打开Microsoft SQL Server Management Studio登录SQLserver数据库,在管理工具中配置链接服务器。配置路径:服务器对象 - 链接服务器。
在链接服务器目录上鼠标右键选择新建链接服务器。访问接口选择Microsoft OLE DB Provider for ODBC Drivers方式。

链接服务器: 引用链接服务器时所使用的名称。
产品名称: 作为链接服务器添加的OLE DB的数据源。如:MySQL可以填写MySQL。
数据源:ODBC数据源中配置的系统DSN。
访问接口字符串: ODBC连接字符串。

截屏2023-03-08 20.51.39.png

截屏2023-03-08 20.52.40.png

4. 通过SQL形式创建链接服务器

-- 在SQLserver数据库当中添加链接服务器        
EXEC master.dbo.sp_addlinkedserver
@server = N'MySQL',
@srvproduct=N'MySQL',
@provider=N'MSDASQL',
@datasrc=N'MySQL',
@provstr=N'DRIVER={MySQL ODBC 8.0 UNICODE Driver};SERVER=127.0.0.1;Port=3306;DATABASE=wms;UID=root;PASSWORD=1az2wsx3edc;OPTION=3;';
-- 修改链接服务器的认证方式      
EXEC master.dbo.sp_addlinkedsrvlogin
@rmtsrvname=N'MySQL',
@useself=N'false',
@rmtuser=N'root',
@rmtpassword=N'1az2wsx3edc';

5. 跨数据库查询

-- 通过链接服务器查询MySQL数据库
select * from OPENQUERY(MySQL,'select * from wms.view_stock');
-- 创建视图
create view view_stock as select * from OPENQUERY(MySQL,'select * from wms.view_stock');