最近在实际得开发工程中,新到了一个需求,需要定时得从mssql向mysql传输数据,但是又不想在后台代码进行任何得操作,我也在网上搜索了一些资料,可是在实际得过程中却发现要么就是写的很简陋,无法进行使用,要么就是关键步骤缺失,COPY得别人的东西,无法使用,所以我就记录一下我得所有步骤!
一 首先,这个操作其实只是分成了两部分,第一部分是在mssql建立mysql链接,使用链接服务器,第二部分是在mssql代理添加代理作业即可。
二 在mssql建立mysql链接
1.首先需要下载一个十分重要得东西 MYSQL ODBC驱动,
2、安装好后,在管理工具-ODBC数据源-系统DSN-添加-选择 MYSQL ODBC X.Xnicode DRIVER-完成
注意:必须选择和操作系统版本相对应的数据源,否则无法进行
选择添加
注意:一定要选择unicode driver
在弹出得页面中填写相对应得mysql参数
Data Source Name:数据源名称
Decription:描述,随便写
Server:MYSQL服务器的IP
Port:MYSQL的端口,默认的是3306.可以改的.
User:连接账号(在mysql上授权的账号,同时给予相应权限)
Password:密码
Database:选择链接的数据库
填好之后,点下test.成功了则会如图跳出提示框.
这时候截至,很多资料就认为可以进行mssql得配置工作了,但是这里少了关键的一步,在我在多台服务器上经验没有这一步都是不能成功得,
在下图中红线框起来的两个DNS都需要进行配置,并且配置得参数必须一致,否则是无法进行链接得,大家也可以尝试一下自己得是否需要
3,打开SQL数据库,找到链接服务器.创建链接服务器,大家都会的,所以我就把参数发一下.如图,常规选项的其他的就不用填了.确定就行了.
这里,需要注意:访问接口要选择“Microsoft OLE DB Provider for ODBC Drivers”。
数据源:选择之前已创建好的ODBC接口。
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数据源上设置符合你的编码格式,如图:
到这一步截至,大多数得准备工作就已经完成了,下来就是mssql的代理作业了
三 mssql的代理作业
这里得东西非常easy,就不过多得赘复了,只是有以下几点需要特别注意
1.这个是依赖mssql代理作业得,需要要配置里把mssql得代理服务打开
2 .代理得sql语句需要使用mysql得时候注意上文中得写法,否则会报错!