SqlServer使用dblink连接MYSQL详细方式
一、在需求LINK数据库电脑(SQLSERVER所在的电脑)上安装MYSQL ODBC驱动:
驱动地址:MySQL :: Download MySQL Connector/ODBC (Archived Versions)
二、安装好驱动后,在系统的管理工具->ODBC数据源(这里有32位和64位的区别)->系统DSN->添加-选择 MYSQL ODBC 5.3 Unicode DRIVER-点击【完成】
会跳出来MYSQL连接参数
输入说明:
Data Source Name:数据源名称 后来连接用到
Decription:描述
Server:MYSQL服务器的IP
Port:MYSQL的端口,默认的是3306.可以改的.
User:连接账号(在mysql上授权的账号,同时给予相应权限)
Password:密码
Database:选择链接的数据库
填好之后,点下test.成功了则会如图跳出提示框.
DSN里面就有了记录(注意在系统DSN里面,原来不小心在用户DSN里面后面link总是提示连不上)
三、 SQLSERVER 建立链接服务器
1.可视化操作方式:登录SQLSERVER 客户端(建议使用,有界面操作)
打开SQL数据库,服务器对象.创建链接服务器,
注意:访问接口要选择“Microsoft OLE DB Provider for ODBC Drivers”。
数据源:选择之前已创建好的ODBC接口。
然后在安全性中 选择使用此安全上下文创建连接 填写MYSQL 数据库的登陆名和密码
link服务器也可以点击查看数据了
2(使用sql语句link的方式)
EXEC master.dbo.sp_addlinkedserver @server = N'MYSQLLINK1',@srvproduct = N'Mysql',@provider = N'MSDASQL', @datasrc = N'mysql01' ;--此处的mysql是刚才所建数据源名称 EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname = N'MYSQLLINK1' ,@useself = N'False' ,@locallogin = NULL ,@rmtuser = N'root' ,@rmtpassword = 'root';
四、常见的sql 语句使用
–查询 SELECT * FROM OPENQUERY(MYSQL_DBLINK, ‘select * from tableName where id=”1”’) –修改 UPDATE OPENQUERY(MYSQL_DBLINK, ‘select * from tableName where id=”1”’) set cname=’测试’ –or UPDATE OPENQUERY(MYSQL_DBLINK, ‘select * from tableName ‘) set cname=’测试’ where id=1 –添加 INSERT INTO OPENQUERY(MYSQL_DBLINK, ‘select * from tableName where 1=0’)values (‘xx’,’xx’,’xx’); –删除 DELETE FROM OPENQUERY(MYSQL_DBLINK, ‘select * from tableName where id=”1”’)
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。用于连接到远程服务器的权限是从为链接服务器定义的设置中获取的
五、【注意】在查询的时候如果出现: 链接服务器 ‘MYSQL_DBLINK’ 的 OLE DB 访问接口 ‘MSDASQL’ 返回了对列 ‘[MSDASQL].cname’ 无效的数据。
需要在MYSQL ODBC数据源上设置符合你的编码格式,如图:
参考文档:
https://blog.csdn.net/weixin_37839711/article/details/81666868