SQL Server通过链接服务器与MySQL创建连接
1、安装MYSQL ODBC驱动
驱动下载地址:http://dev.mysql.com/downloads/connector/odbc/
注: 应用环境是WIN10 64位系统,MSSQL为2017版,下载了MySQL-ODBC-8.0-64位安装版驱动。
2、创建ODBC数据源
控制面板-》管理工具-》ODBC数据源(64位)-》系统DSN-》添加-》选择 MYSQL ODBC 8.0 Unicode DRIVER-》完成
clipboard.png
3、配置MySQLODC数据源连接参数:
》上一步操作后会跳出来MYSQL连接参数。
Data Source Name:数据源名称
Decription:描述
TCP/IP Server:MYSQL服务器的IP
Port:MYSQL的端口,默认3306
User:连接账号(在MySQL上授权的账号,同时给予相应权限)
Password:密码
Database:选择链接的数据库
clipboard1.png》点击【Test】按钮测试配置是否可远程连接,成功了则会如图跳出提示框。
clipboard2.png4、配置MSSQL链接服务到MySQL:
》打开MSSQL数据库找到链接服务器,创建链接服务器。参数如图:(常规选项的其他的就不用填了,确定就行了)
注:访问接口要选择“Microsoft OLE DB Provider for ODBC Drivers”、数据源:填写之前已创建好的ODBC数据源名称。
》然后在【安全性】中 选择使用此安全上下文创建连接 填写MYSQL 数据库的登陆名和密码。
clipboard4.png
5、常用SQL 语句使用
--查询方式一
SELECT COUNT(*) FROM OPENQUERY(MYSQL, 'SELECT * FROM as_area');
SELECT * FROM OPENQUERY(MYSQL,'SELECT * FROM dzwl_product_hbtj.as_area WHERE area_name = "测试"');
--查询方式二
SELECT * FROM OPENQUERY(MYSQL,'SELECT * FROM dzwl_product_hbtj.as_area') WHERE area_name = '测试';
--修改方式一
UPDATE OPENQUERY(MYSQL, 'select * from as_area where id="1"') SET area_code= '234';
--修改方式二
UPDATE OPENQUERY(MYSQL, 'select * from as_area') SET area_code= '345 ' WHERE id='1';
--新增
INSERT INTO OPENQUERY(MYSQL, 'select id, area_code, area_name,create_date from dzwl_product_hbtj.as_area where 1=0 ') values ( '2 ', '234 ', '测试2 ','2020-05-04 23:40:01');
--删除
DELETE FROM OPENQUERY(MYSQL, 'select * from as_area where id="3"');
【注意】在查询的时候如果出现: 链接服务器 ‘MYSQL_DBLINK’ 的 OLE DB 访问接口 ‘MSDASQL’ 返回了对列 ‘[MSDASQL].area_name’ 无效的数据。
需要在MYSQL ODBC数据源上设置符合你的编码格式,如图:
6、OPENQUERY用法
对给定的链接服务器执行指定的传递查询。该服务器是 OLE DB 数据源。OPENQUERY 可以在查询的 FROM 子句中引用,就好象它是一个表名。OPENQUERY 也可以作为 INSERT、UPDATE 或 DELETE 语句的目标表进行引用。但这要取决于 OLE DB 访问接口的功能。尽管查询可能返回多个结果集,但是 OPENQUERY 只返回第一个。
Transact-SQL 语法约定
语法
OPENQUERY ( linked_server ,’query’ )
参数
linked_server:表示链接服务器名称的标识符。
’query’:在链接服务器中执行的查询字符串。该字符串的最大长度为 8 KB。
注:OPENQUERY 不接受其参数的变量。
在 SQL Server 2000 和更高版本中,OPENQUERY 不能用于对链接服务器执行扩展存储过程。但是,通过使用四部分名称,可以在链接服务器上执行扩展存储过程。
例:EXEC SeattleSales.master.dbo.xp_msver
权限
任何用户都可以执行 OPENQUERY。用于连接到远程服务器的权限是从为链接服务器定义的设置中获取的。