EXEC sp_addlinkedserver
@server='YCGA_MySQL', --ODBC裏面data source name 上圖記住的名字
@srvproduct='MySQL', --自己隨便
@provider='MSDASQL', --固定這個
@datasrc=NULL,
@location=NULL,
@provstr='DRIVER={MySQL ODBC 8.0 Unicode Driver};SERVER=IP地址;DATABASE=數據庫名;UID=richard;PORT=3306;',
--這裏面的參數,分別是驅動名稱,比如我的是MySQL ODBC 8.0 一般只改下版本號就可以,後面是數據庫地址,數據庫名,UID就是唯一標識這個自己起就行,最後的是數據庫端口號
@catalog = NULL
exec sp_addlinkedsrvlogin
@rmtsrvname='YCGA_MySQL' ,----ODBC裏面data source name 跟上面的一樣
@useself='false' ,
@rmtuser='賬號' ,---mysql賬號
@rmtpassword='密碼' ;--mysql賬號其密碼
select * from openquery(YCGA_MySQL,'SELECT * FROM xinhu_A04; ')
EXEC sp_addlinkedserver @server=N'loopback',@srvproduct=N' ',@provider=N'SQLNCLI',
@datasrc=@@SERVERNAME
GO
--select * from openquery(YCGA_MySQL,'SELECT * FROM xinhu_A04; ')
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
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
USE [YC_HR]
GO
EXEC YC_HR.dbo.sp_serveroption @server=N'loopback',@optname=N'rpc out',@optvalue=N'TRUE'
GO
EXEC YC_HR.dbo.sp_serveroption @server=N'loopback',@optname=N'remote proc transaction promotion',@optvalue=N'false'
GO
CREATE PROCEDURE A34_INSERT
@PersonID VARCHAR,
@DispOrder INT,
@A3405 VARCHAR,
@A3410 VARCHAR,
@E3401 VARCHAR
AS
BEGIN
SET NOCOUNT ON
INSERT OPENQUERY(YCGA_MySQL, 'select * from xinhu_A34')(PersonID,DispOrder,A3405,A3410,E3401) values (@PersonID,@DispOrder,@A3405,@A3410,@E3401);
SET NOCOUNT OFF
END
CREATE TRIGGER SRV_A34_INSERT ON loopback.yc_hr.dbo.A34
FOR INSERT
AS
DECLARE
@PersonID VARCHAR,
@DispOrder INT,
@A3405 VARCHAR,
@A3410 VARCHAR,
@E3401 VARCHAR
SELECT @PersonID=PersonID,@DispOrder=DispOrder,@A3405=A3405,@A3410=A3410,@E3401=E3401 FROM INSERTED;
BEGIN
EXEC loopback.yc_hr.dbo.A34_insert @PersonID,@DispOrder,@A3405,@A3410,@E3401;
END
SELECT * from loopback.yc_hr.dbo.A34;
CREATE TRIGGER SRV_A34_INSERT ON YC_HR.dbo.A34
FOR INSERT
AS
DECLARE
@PersonID VARCHAR,
@DispOrder INT,
@A3405 VARCHAR,
@A3410 VARCHAR,
@E3401 VARCHAR
SELECT @PersonID=PersonID,@DispOrder=DispOrder,@A3405=A3405,@A3410=A3410,@E3401=E3401 FROM INSERTED;
BEGIN
EXEC loopback.yc_hr.dbo.A34_insert @PersonID,@DispOrder,@A3405,@A3410,@E3401;
END
CREATE PROCEDURE A17_INSERT
@PersonID VARCHAR(10),
@DispOrder INT,
@E1701 VARCHAR(1),
@E1703 VARCHAR(20),
@E1705 datetime,
@E1709 datetime
AS
BEGIN
SET NOCOUNT ON
INSERT OPENQUERY(YCGA_MySQL, 'select * from xinhu_A17')(PersonID,DispOrder,E1701,E1703,E1705,E1709) values (@PersonID,@DispOrder,@E1701,@E1703,@E1705,@E1709);
SET NOCOUNT OFF
END
--聲明數據庫引用
use YC_HR;
go
--判斷是否存在,如果存在則刪除
if exists(select * from sys.triggers where name='SRV_A17_INSERT')
--刪除DML觸發器
drop trigger SRV_A17_INSERT;
----刪除DDL觸發器
drop trigger SRV_A17_INSERT on database;
--刪除登錄觸發器
drop trigger SRV_A17_INSERT on all server;
go