原文:通过sql server 连接 mysql - 走看看 (zoukankan.com)
EXEC master.dbo.sp_addlinkedserver @server = N'MYSQL', @srvproduct=N'MySQL', @provider=N'MSDASQL', @provstr=N'DRIVER={MySQL ODBC 5.3 ANSI Driver}; SERVER=192.168.200.106:3306; _ DATABASE=system_analysis; USER=liuyuan; PASSWORD=123123; OPTION=3' SELECT * FROM OPENQUERY(MYSQL_DBLINK, 'select * from tableName where id=''1''') --在 sqlserver 下 复制一张表 语法是 : select * into tablenew from tableold SELECT * into tableRisk FROM OPENQUERY(MYSQL_RISK, 'select * from user_alipay_history limit 1000')
-
步骤
1、在SQL SERVER服务器上安装MYSQL ODBC驱动;
驱动下载地址:http://dev.mysql.com/downloads/connector/odbc/
2、安装好后,在 控制面板 - 管理工具 - ODBC数据源 - 系统DSN - 添加 - 选择 MYSQL ODBC 5.3 Unicode DRIVER - 完成
这时会跳出来MYSQL连接参数
Data Source Name:数据源名称
Decription:描述,随便写
Server:MYSQL服务器的IP
Port:MYSQL的端口,默认的是3306.可以改的.
User:连接账号(在mysql上授权的账号,同时给予相应权限)
Password:密码
Database:选择链接的数据库
填好之后,点下test.成功了则会如图跳出提示框.
3,打开SQL数据库,找到链接服务器.创建链接服务器,参数如图,其他的就不用填了.确定就行了.
这里,需要注意:访问接口要选择 “ Microsoft OLE DB Provider for ODBC Drivers ”。
数据源:选择之前已创建好的 ODBC 接口。
然后在安全性中
选择 使用此安全上下文创建连接
填写 MYSQL 数据库的登陆名和密码
4、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''')
**【注意】在查询的时候如果出现: 链接服务器 'MYSQL_DBLINK' 的 OLE DB 访问接口 'MSDASQL' 返回了对列 '[MSDASQL].cname' 无效的数据。
需要在MYSQL ODBC数据源上设置符合你的编码格式,如图:
5、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。用于连接到远程服务器的权限是从为链接服务器定义的设置中获取的。