*/mysql
--新建连接服务器 exec sp_addlinkedserver @server='MySqll_Aggregation',--ODBC里面data source name @srvproduct='MySql',--本身随便 @provider='MSDASQL',--固定这个 @datasrc='MySqll_Aggregation', ----ODBC里面data source name @location=NULL, --@provstr='DRIVER={MySQL ODBC 5.3 ANSI Driver};SERVER=172.17.29.33;DATABASE=bi;UID=zhaowenzhong;PORT=3306;', --和@datasrc属性二选一 @catalog=NULL
---建立链接mysql数据库的帐号及密码 exec sp_addlinkedsrvlogin @rmtsrvname='MySqll_Aggregation',----ODBC里面data source name @useself='false', @rmtuser='zhaowenzhong',---mysql帐号 @rmtpassword='mysqldba@2015';--mysql帐号其密码
---测试是否能够访问mysql数据库中的表 select * from openquery(MySqll_Aggregation,'SELECT * FROM tb; ') -----创建容许远程访问链接操做 USE [master] GO EXE Cmaster.dbo.sp_serveroption @server=N'MySqll_Aggregation',@optname=N'rpc out',@optvalue=N'TRUE' GO EXEC master.dbo.sp_serveroption @server=N'MySqll_Aggregation',@optname=N'remote proc transaction promotion',@optvalue=N'false' GO --创建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 ---编写触发器和存储过程 --insert CREATE TRIGGER TR_INSERT_TB ON DB_TY2015.DBO.TB FOR INSERT AS DECLARE@ID INT, @QTY INT SELECT@ID=ID,@QTY=QTY FROM INSERTED; BEGIN EXEC loopback.db_ty2015.dbo.sp_insert@id,@qty; END CREATE PROCEDURE SP_INSERT @ID INT, @QTY INT AS BEGIN SET NOCOUNT ON INSERT OPENQUERY(db_ty2015,'select * from tb')(id,qty) values (@id,@qty); SET NOCOUNT OFF END ---update CREATE TRIGGERT R_UPDATE_TB ON DB_TY2015.DBO.TB FOR UPDATE AS DECLARE @ID INT,@QTY INT SELECT@ID=ID,@QTY=QTY FROM INSERTED; BEGIN EXEC loopback.db_ty2015.dbo.sp_update@id,@qty; END CREATE PROCEDURE SP_UPDATE @ID INT, @QTY INT AS BEGIN SET NOCOUNT ON UPDATE OPENQUERY(db_ty2015,'select * from tb') SET qty=@qty WHERE id=@id SET NOCOUNT OFF END --delete CREATE TRIGGER TR_DELETE_TB ON DB_TY2015.DBO.TB FOR DELETE AS DECLARE @ID INT SELECT@ID=ID FROM DELETED; BEGIN EXEC loopback.db_ty2015.dbo.sp_DELETE@id; END CREATE PROCEDURE SP_DELETE @ID INT AS BEGIN SET NOCOUNT ON DELETE OPENQUERY(db_ty2015,'select * from tb') WHERE id=@id SET NOCOUNT OFF END -------初始化数据 表已存在的状况 insert into penquery(MySqll_Aggregation,'select * from bi.tb') select*from[FSLogin].[dbo].[tb]with(nolock) ---从mysql同步表结构及数据到sqlserver上 select * into [SqlServerDBName].dbo.MYTest from openquery(localmysql,'select * from mysqldbname.weibosession')来源:http://blog.csdn.net/zhaowenzhong/article/details/50599372