Combat: sqlserver data real-time synchronization to mysql

1. Installation mysqlconnector


2. Configure mysqlconnector

ODBC data manager -> System DSN-> Add -> mysql ODBC 5.3 ANSI driver-> JT filled as data source name, the IP MySQL, user name, password


3. New Linked Server


the sp_addlinkedserver Exec 
 @ = Server 'JT', which --ODBC name Source Data
 @ srvproduct = 'MySQL', - their casual
 @ provider = 'MSDASQL', - fixing the
 @ = NULL DATASRC,
 @ = NULL LOCATION,
 @provstr = '= {the DRIVER the ANSI 5.3 the MySQL the ODBC Driver}; SERVER = 192.168.5.188; DATABASE = Suzhou; the UID = the 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 and new mysql database and table

 

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 Create loop.
 - establish links LOOPBACK server

EXEC sp_addlinkedserver @server = N'loopback' , @srvproduct = N' ' , @provider = N'SQLNCLI',
@datasrc = @@SERVERNAME
go


- Set the server link options, stop SQL Server because the Remote Procedure calls and local affairs promoted to Distribution Services (focus)
the USE [Master]
GO
EXEC master.dbo.sp_serveroption @ Server = N'loopback ', @ optname = N'rpc OUT ', @ = optvalue N'true'
the GO
EXEC master.dbo.sp_serveroption = N'loopback Server @ ', @ = N'remote optname Transaction Promotion proc', @ = optvalue N'false '
the GO


---- 6. write triggers and stored procedures

----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') set remark=@remark where orderno=@orderno
END
go

 


--- update test data

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')  where orderno=@orderno
END
go

 


--- delete data test

use suzhou
go
delete from sz where orderno='a001'
go

Guess you like

Origin www.cnblogs.com/SyncNavigator8-4-1/p/10975070.html
Recommended