SQLServer 分布式查询MySQL

这学期开了分布式数据库这门课,开始编程实现,今天调试了一早上,写下此配置文件方便查询。

本文实现的是SQLServer2008 Express 链式添加MySql-5.6.10数据库,进行远程操作。

一、下载安装MySql数据库

下载解压缩MySql安装包,解压之后大约是1G,安装在D盘。用管理员身份打开cmd.exe,换到D:\mysql-5.6.10-win32\bin目录下。

执行下面:

1
mysqld -install

提示安装成功,恭喜你的MySql已经可以正常使用了,剩下的就是启动操作你的数据库了  

1
2
从Windows命令行启动MySQL服务器,启动控制台窗口并输入命令:D:\mysql-5.6.10-win32\bin>mysqld -nt
从Windows命令行停止MySQL服务器,启动控制台窗口并输入命令:D:\mysql-5.6.10-win32\bin>mysqladmin -u root shutdown

成功启动之后,打开你的任务管理器,你会看到有一个MySql服务正在运行。

启动MySql服务之后,接下来进行连接数据库:

1
2
3
4
5
6
7
8
9
D:\mysql-5.6.10-win32\bin>mysql -u root     // 使用用户名为root,密码为空的根账号登陆mysql操作控制台
    Welcome to the MySQL monitor.  Commands end with ; or /g.
    Your MySQL connection id is 2
    Server version: 5.0.67-community-nt MySQL Community Edition (GPL)
    Type ‘help;‘ or ‘/h‘ for help. Type ‘/c‘ to clear the buffer.
 
    mysql> quit       //quit退出mysql连接
    Bye
    D:/MySQL/bin>

开启MySQL远程服务,连接好数据库后执行如下代码:

1
2
mysql> use mysql;
mysql> GRANT ALL ON *.* TO admin@‘%‘ IDENTIFIED BY ‘admin‘ WITH GRANT OPTION;

这样所以的用户都可以远程访问你的MySQL服务了  

本文限于链式添加mysql数据库,关于my.ini配置文件大家去GOOGLE吧

二、下载mysql-connector-odbc-5.2.6-win32.msi驱动程序包

下载安装之后,就有了mysql ODBC驱动包

接下来打开你的控制面板,在搜索里面搜  “管理工具”,如图:

双击打开数据源(ODBC),选择MySQL ODBC 5.2 ANSI Driver驱动配置你的MySQL系统数据源,并且选择你的表

三、打开SQLServer Management进行添加操作

1
2
3
4
5
6
7
8
9
10
11
12
13
EXEC sp_addlinkedserver
@server = ‘MySQLTest‘,        --添加在SQLServer中链式服务器名字
@srvproduct=‘MySQL‘,          
@provider = ‘MSDASQL‘,       
@datasrc = ‘myDSN‘             --在2步骤中添加的数据源名字
GO
EXEC sp_addlinkedsrvlogin 
@rmtsrvname=‘MySqlTest‘,       
@useself=‘false‘,
@locallogin=‘sa‘,
@rmtuser=‘mysql的用户名‘,
@rmtpassword=‘mysql的密码‘
GO

注意:如果Mysql修改密码后必须重新映射一下EXEC sp_addlinkedsrvlogin

到这步如果上面操作都正确,那么你就可以操作你的MySQL远程数据库了

下面是对MySQL执行增删查改的SQL语句,和操作远程SQLServer语句略有不同

1
2
3
4
5
6
7
8
9
10
SELECT * FROM OPENQUERY (MySQLTest ,‘select * from 表名‘ )
//查询
INSERT OPENQUERY (MySQLTest, ‘SELECT id,parentid,level,title FROM 表名‘)
VALUES (‘‘,‘0‘,‘0‘,‘zhangzongqi‘);
//添加
UPDATE OPENQUERY (MySQLTest, ‘SELECT parentid,level,title FROM 表名 WHERE id = 320‘)
SET parentid = ‘2‘,LEVEL=3, title=title+‘pct‘;
//更新
DELETE OPENQUERY (MySQLTest, ‘SELECT id FROM 表名WHERE id = 316‘);
//删除

觉得好用的请赞一个,如果发现有不对的地方,请留言以更正,谢谢~

 

SQLServer 分布式查询MySQL,古老的榕树,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。