架构师_程序员

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 494|回复: 1

[资料] SqlServer实时数据同步到MySql数据库

[复制链接]
跳转到指定楼层
楼主
发表于 2019-5-29 17:10:03
zu
---安装安装mysqlconnector
http://www.mysql.com/products/connector/
/*
配置mysqlconnector

打开sqlserver机器上的“控制面板”,找到“管理工具”–“设置数据源(ODBC)”,如果不好找,可以在搜索框中输入“ODBC”找到。
打开“ODBC数据源管理器”,点击“添加”。

ODBC数据管理器->系统DSN->添加->mysql ODBC 5.3 ANSI driver->填入data source name如jt,mysql的ip、用户名、密码即可
*/



  1. --新建链接服务器
  2. exec sp_addlinkedserver
  3. @server='MySqll_Aggregation',--ODBC里面data source name
  4. @srvproduct='MySql',--自己随便
  5. @provider='MSDASQL',--固定这个
  6. @datasrc=NULL,
  7. @location=NULL,
  8. @provstr='DRIVER={MySQL ODBC 5.3 ANSI Driver};SERVER=172.17.29.33;DATABASE=bi;UID=zhaowenzhong;PORT=3306;',
  9. @catalog=NULL
复制代码


  1. ---创建连接mysql数据库的账号及密码
  2. exec sp_addlinkedsrvlogin
  3. @rmtsrvname='MySqll_Aggregation',----ODBC里面data source name
  4. @useself='false',
  5. @rmtuser='zhaowenzhong',---mysql账号
  6. @rmtpassword='mysqldba@2015';--mysql账号其密码
复制代码


  1. ---测试是否可以访问mysql数据库中的表
  2. select * from openquery(MySqll_Aggregation,'SELECT * FROM tb; ')
  3. -----建立允许远程访问连接操作
  4. USE [master]
  5. GO
  6. EXE Cmaster.dbo.sp_serveroption@server=N'MySqll_Aggregation',@optname=N'rpc out',@optvalue=N'TRUE'
  7. GO
  8. EXEC master.dbo.sp_serveroption@server=N'MySqll_Aggregation',@optname=N'remote proc transaction promotion',@optvalue=N'false'
  9. GO
  10.   
  11. --建立LOOPBACK 服务器链接
  12. EXEC sp_addlinkedserver@server=N'loopback',@srvproduct=N' ',@provider=N'SQLNCLI',
  13. @datasrc=@@SERVERNAME
  14. go
  15. --设置服务器链接选项,阻止SQL Server 由于远过程调用而将本地事务提升为分布事务(重点)
  16. USE [master]
  17. GO
  18. EXEC master.dbo.sp_serveroption@server=N'loopback',@optname=N'rpc out',@optvalue=N'TRUE'
  19. GO
  20. EXEC master.dbo.sp_serveroption@server=N'loopback',@optname=N'remote proc transaction promotion',@optvalue=N'false'
  21. GO
  22. ---编写触发器和存储过程
  23. --insert
  24. CREATE TRIGGER TR_INSERT_TB ON  DB_TY2015.DBO.TB
  25. FOR INSERT
  26. AS
  27. DECLARE@ID INT,
  28.                                 @QTY INT
  29.                                 SELECT@ID=ID,@QTY=QTY FROM INSERTED;
  30.                                 BEGIN
  31.                                                 EXEC loopback.db_ty2015.dbo.sp_insert@id,@qty;
  32.                                 END
  33. CREATE PROCEDURE SP_INSERT
  34. @ID INT,
  35. @QTY INT
  36. AS
  37. BEGIN
  38.                 SET NOCOUNT ON
  39.                                 INSERT OPENQUERY(db_ty2015,'select * from tb')(id,qty) values (@id,@qty);
  40.                 SET NOCOUNT OFF
  41. END

  42. ---update
  43. CREATE TRIGGERT R_UPDATE_TB ON DB_TY2015.DBO.TB
  44. FOR UPDATE
  45. AS
  46. DECLARE @ID INT,@QTY INT
  47. SELECT@ID=ID,@QTY=QTY FROM INSERTED;
  48. BEGIN
  49.                 EXEC loopback.db_ty2015.dbo.sp_update@id,@qty;
  50. END

  51. CREATE PROCEDURE SP_UPDATE
  52. @ID INT,
  53. @QTY INT
  54. AS
  55. BEGIN
  56.                 SET NOCOUNT ON
  57.                                 UPDATE OPENQUERY(db_ty2015,'select * from tb') SET qty=@qty WHERE id=@id
  58.                 SET NOCOUNT OFF
  59. END

  60. --delete
  61. CREATE TRIGGER TR_DELETE_TB ON DB_TY2015.DBO.TB
  62. FOR DELETE
  63. AS

  64.                 DECLARE @ID INT
  65.                 SELECT@ID=ID FROM DELETED;
  66. BEGIN
  67.                 EXEC loopback.db_ty2015.dbo.sp_DELETE@id;
  68. END

  69. CREATE PROCEDURE SP_DELETE
  70. @ID INT
  71. AS
  72. BEGIN
  73.                 SET NOCOUNT ON
  74.                                 DELETE OPENQUERY(db_ty2015,'select * from tb') WHERE id=@id
  75.                 SET NOCOUNT OFF
  76. END

  77. -------初始化数据     表已存在的情况
  78. insert  into  penquery(MySqll_Aggregation,'select * from bi.tb') select*from[FSLogin].[dbo].[tb]with(nolock)


  79. ---从mysql同步表结构及数据到sqlserver上
  80. select * into  [SqlServerDBName].dbo.MYTest  from   openquery(localmysql,'select * from mysqldbname.weibosession')
复制代码







上一篇:网站国外打开速度在线测试工具
下一篇:【原创】开源自定义列表支持窗口大小变化自动排列使用 ...
帖子永久地址: 

架构师_程序员 - 论坛版权1、本主题所有言论和图片纯属会员个人意见,与本论坛立场无关
2、本站所有主题由该帖子作者发表,该帖子作者与架构师_程序员享有帖子相关版权
3、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和架构师_程序员的同意
4、帖子作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任
5、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
6、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
7、架构师_程序员管理员和版主有权不事先通知发贴者而删除本文

码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
沙发
发表于 2019-5-30 13:43:16
感谢分享!!!!!!!!!!
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

免责声明:
码农网所发布的一切软件、编程资料或者文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。

Mail To:help@itsvse.com

QQ|Archiver|手机版|小黑屋|架构师 ( 鲁ICP备14021824号-2 )|网站地图

GMT+8, 2019-9-18 22:27

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表