实战:sqlserver 数据实时同步到mysql

摘要:
1.安装安装mysqlconnector2.配置mysqlconnectorODBC数据管理器-˃系统DSN-˃添加-˃mysqlODBC5.3ANSIdriver-˃填入datasourcename如jt,mysql的ip、用户名、密码即可3.新建链接服务器execsp_addlinkedserver@server=’jt’,–ODBC里面datasourcename@srvproduct=’m

1.安装安装mysqlconnector
2.配置mysqlconnector

ODBC数据管理器->系统DSN->添加->mysql ODBC 5.3 ANSI driver->填入data source name如jt,mysql的ip、用户名、密码即可
3.新建链接服务器
exec sp_addlinkedserver
@server=’jt’, –ODBC里面data source name
@srvproduct=’mysql’, –自己随便
@provider=’MSDASQL’, –固定这个
@datasrc=NULL,
@location=NULL,
@provstr=’DRIVER={MySQL ODBC 5.3 ANSI Driver};SERVER=192.168.5.188;DATABASE=suzhou;UID=root;PORT=3306;’,
@catalog = NULL
exec sp_addlinkedsrvlogin
@rmtsrvname=’jt’,
@useself=’false’,
@rmtuser=’root’,
@rmtpassword=’password’;

select * from openquery(jt,’SELECT * FROM sz ; ‘)
GO

USE [master]
GO
EXEC master.dbo.sp_serveroption @server=N’jt’, @optname=N’rpc out’, @optvalue=N’TRUE’
GO
EXEC master.dbo.sp_serveroption @server=N’jt’, @optname=N’remote proc transaction promotion’, @optvalue=N’false’
GO

—4.sqlserver和mysql新建库和表

create database suzhou;

create table sz(
id int not null identity(1,1) primary key,
orderno char(20) not null,
ordertime datetime not null default getdate(),
remark varchar(200)
)
go

create table sz(
id int(11) not null ,
orderno char(20) not null,
ordertime datetime(6) not null ,
remark varchar(200),
primary key (id)
) engine=innodb default charset=utf8;

—5.建立回环
–建立LOOPBACK 服务器链接

EXEC sp_addlinkedserver @server = N’loopback’ , @srvproduct = N’ ‘ , @provider = N’SQLNCLI’,
@datasrc = @@SERVERNAME
go
–设置服务器链接选项,阻止SQL Server 由于远过程调用而将本地事务提升为分布事务(重点)
USE [master]
GO
EXEC master.dbo.sp_serveroption @server=N’loopback’, @optname=N’rpc out’, @optvalue=N’TRUE’
GO
EXEC master.dbo.sp_serveroption @server=N’loopback’, @optname=N’remote proc transaction promotion’, @optvalue=N’false’
GO
—-6.编写触发器和存储过程

—-6.1 insert

–重写触发器
use suzhou
go
alter trigger tr_insert_sz on suzhou.dbo.sz
for insert
as
declare @id int, @orderno char(20),@ordertime datetime,@remark varchar(200)
select @id=id,@orderno=orderno,@ordertime=ordertime,@remark =remark from inserted;
begin
print @id
print @orderno
print @ordertime
print @remark
exec loopback.suzhou.dbo.sp_insert @id,@orderno,@ordertime,@remark
end
go

–存储过程
use suzhou
go
create PROCEDURE sp_insert(
@id int,
@orderno char(20),
@ordertime datetime,
@remark varchar(200)
)
AS
BEGIN
SET NOCOUNT ON;
Insert openquery(jt, ‘select * from sz’)(id,orderno,ordertime,remark)values(@id,@orderno,@ordertime,@remark)
END
go
—-6.2 update

–重写触发器
use suzhou
go
create trigger tr_update_sz on suzhou.dbo.sz
for update
as
declare @orderno char(20),@remark varchar(200)
select @orderno=orderno,@remark =remark from inserted;
begin
exec loopback.suzhou.dbo.sp_update @orderno,@remark
end
go

–存储过程
use suzhou
go
create PROCEDURE sp_update(
@orderno char(20),
@remark varchar(200)
)
AS
BEGIN
SET NOCOUNT ON;
update openquery(jt, ‘select * from sz’) setremark=@remarkwhereorderno=@orderno
END
go

—update数据测试

use suzhou
go
update sz set remark=’ocpyang’ where orderno=’a001′
go
—-6.3 delete

–重写触发器
use suzhou
go
create trigger tr_delete_sz on suzhou.dbo.sz
for delete
as
declare @orderno char(20)
select @orderno=orderno from deleted;
begin
exec loopback.suzhou.dbo.sp_delete @orderno
end
go

–存储过程
use suzhou
go
create PROCEDURE sp_delete(
@orderno char(20)
)
AS
BEGIN
SET NOCOUNT ON;
delete openquery(jt, ‘select * from sz’) whereorderno=@orderno
END
go

—delete数据测试

use suzhou
go
delete from sz where orderno=’a001′
go

免责声明:文章转载自《实战:sqlserver 数据实时同步到mysql》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇用VS Code写C#fio压测下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

mysql8下载安装及配置

mysql8下载和安装 一、下载 官网地址:https://dev.mysql.com/downloads/mysql/8.0.html 选择“downloads”-->"mysql community server",如下图所示: 向下滑动页面,找到你电脑适配的版本,点击“download”,如下图: 页面跳转,不需要注册和登陆,点击“No t...

Docker中部署mysql后SpringBoot连接时提示表不存在(修改表名忽略大小写)

场景 Docker中部署mysql数据库: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/99213563 在上面使用Docker部署数据库之后,运行SpringBoot的jar包连接时报错,提示: java.sql.SQLSyntaxErrorException:Table 'xx'....

C#winform解析marc显示在datagridview中以及marc卡片显示

结果显示:marc显示: 卡片显示: 程序一个类: public class MARC { #region 界面上要显示的元素 public string ztm = "";//正题名 public string ftm = "";//副题名 public string fcm = "";//分册(辑)名 public string fch = "";...

Linux终端(三)

终端输出使用termios结构,我们可以控制键盘输入,但是如果在显示在屏幕上的输出上可以进行同样级别的控制也许会更好。在我们本章的开始,我们使用printf来向屏幕输出字符,但是却没有办法将输出定位在屏幕上的某个特定位置上。终端类型许多Unix系统使用终端,尽管在今天的许多情况下,终端也许实际上是一个运行终端程序的PC。从历史上来说,不同的生产产商提供了大...

使用logstash同步Mysql数据表到ES的一点感悟

针对单独一个数据表而言,大致可以分如下两种情况: 1.该数据表中有一个根据当前时间戳更新的字段,此时监控的是这个时间戳字段 具体可以看这个文章:https://www.cnblogs.com/sanduzxcvbnm/p/12858967.html 示例: modification_time就是表中要监控的时间戳字段 input { jdbc {...

mysql数据库设置外键,更新与删除选项

CASCADE:父表delete、update的时候,子表会delete、update掉关联记录;SET NULL:父表delete、update的时候,子表会将关联记录的外键字段所在列设为null,所以注意在设计子表时外键不能设为not null;RESTRICT:如果想要删除父表的记录时,而在子表中有关联该父表的记录,则不允许删除父表中的记录;NO A...