SQL Server下创建Mysql链接服务器的过程详解

标签:
mysql链接服务器sqlserver操作mysql跨库操作mysql数据sqlserver链接mysql |
分类: 数据库学习 |
一、相关驱动安装
1、安装MySQL驱动
包,直接下一步即可安装成功。安装成功后,你可以在控制面板——管理工具——数据源(ODBC)——驱动程序选项下找到你刚安装的驱动了;当然也可以在运行中输入“odbcad32.exe”打开“ODBC数据源管理器”,点击“驱动程序”选项,可看到“MySQL ODBC 5.1 Driver”已安装成功,如下图所示:
2、建立ODBC数据源
选择“MySQL ODBC 5.1 Driver”,点击“完成”,如下图所示:
三、建立链接服务器
1、使用向导建立链接服务器
“Driver={MySQL ODBC 5.1 Driver};Server=192.168.0.102;User=root;Password=rootPassword;”即可,如下图所示:
2、使用SQL语句创建链接服务器
可以使用以下SQL语句创建链接服务器,其中使用了ODBC数据源:
EXEC master.dbo.sp_addlinkedserver
@server = 'MyTest', --链接服务器名
@srvproduct = 'mysqlserver', --产品名称
@provider = 'MSDASQL', --访问接口
@datasrc = 'Testmysql' --数据源名称,这里使用了ODBC数据源
EXEC master.dbo.sp_addlinkedsrvlogin
@rmtsrvname='MyTest',
@useself='False',
@locallogin=NULL,
@rmtuser=NULL,
@rmtpassword=NULL
GO
也可以使用以下SQL语句创建链接服务器,其中没有使用ODBC数据源,使用的是访问接口字符串:
EXEC master.dbo.sp_addlinkedserver
@server = 'MyTest', --链接服务器名
@srvproduct = 'mysqlserver', --产品名称
@provider = 'MSDASQL', --访问接口
@provstr = 'Driver={MySQL ODBC 5.1 Driver};Server=192.168.0.102;User=root;Password=rootPassword;' --访问接口字符串
EXEC master.dbo.sp_addlinkedsrvlogin
@rmtsrvname='MyTest',--链接服务器名称
@useself='False',
@locallogin=NULL,
@rmtuser=NULL,--登录远程服务器用户名
@rmtpassword=NULL--登录远程服务器密码
GO
注:这种不使用ODBC数据源创建链接服务器的方式在数据处理中相对比较灵活,一般比较常用。
四、通过SQL Server操作MySQL进行数据查询等操作测试
MySQL数据库test 中的数据表UserInfo的结构如下:
操作该表的方法如下:
1、查询MySQL中的数据
select * from openquery(MyTest,'select * from test.UserInfo');
2、向MySQL表中插入数据
insert into
openquery(MyTest,'select * from test.UserInfo')
select 1,'UserName';
3、删除MySQL表中的数据
delete from openquery(MyTest,'select * from test.UserInfo');
4、修改MySQL表中的数据
update
openquery(MyTest,'select * from test.UserInfo')
set UserName='jiajia' where UserID=1;
5、openquery参数中使用变量进行查询
示例A(不带变量):
declare @sql varchar(1000)
declare @tab_name varchar(50)
set
set
exec(@sql);
示例B(带一个变量):
declare
declare
declare @num2 int
select
select
select
--select
declare
set
set
--select
exec sp_executesql @sql1,N'@num1 int output',@num1 output
--select
set
set
--select
exec sp_executesql @sql2,N'@num2 int output',@num2 output
--exec(@sql1)
--exec(@sql2)
select
示例C(带多个变量):
declare
declare
select
select
declare
set
SELECT
GROUP
ORDER
LIMIT
set
--select
exec sp_executesql @sql1,N'@user_id int output,@user_tel
varchar(20) output,@buy_num int output',@user_id output,@user_tel
output,@buy_num output
select
示例D(返回多条记录,可以联合UNION ALL 做数据联合查询处理):
declare
select
select
declare
--创建一个临时表
select top 0
set
SELECT
GROUP
ORDER
LIMIT
set
insert into #t_tmp(user_id,user_tel,buy_num)
exec sp_executesql @sql1
select
本文主要参考:
http://blog.csdn.net/yongsheng0550/article/details/6598252