相关文章推荐
侠义非凡的菠菜  ·  Python pandas ...·  4 天前    · 
侠义非凡的菠菜  ·  rc-form源码浅析 - ·  7 月前    · 
侠义非凡的菠菜  ·  Configuring HTTP ...·  10 月前    · 
聪明的作业本  ·  Advanced query ...·  35 分钟前    · 
失望的鸡蛋面  ·  "Microsoft Outlook ...·  37 分钟前    · 
坚强的柿子  ·  mongodb 多表关联处理 : ...·  40 分钟前    · 
不爱学习的火腿肠  ·  java ...·  2 小时前    · 
旅行中的铁链  ·  错误信息:SSL ShakeHand ...·  2 小时前    · 
憨厚的金鱼  ·  Scanpy数据结构:AnnData - 何帅 ·  2 小时前    · 

SqlServer数据实时同步到mysql

一、首先要装一个ODBC的驱动用来建立mysql的连接。http://www.mysql.com/products/connector/
在这里插入图片描述
注意:一定要用32位的可用cmd执行这个命令:

c:\windows\syswow64\odbcad32.exe

配置【用户DSN】和【系统DSN】
在这里插入图片描述

二、打开sqlserver建立链接服务器
右键新建链接服务器
1、点击【常规】
在这里插入图片描述
填上在ODBC建立的服务器名称,访问接口选择ODBC
2、点击【安全性】
在这里插入图片描述
选择最后一个,并填上mysql的账户密码
最后点确定就会看到链接服务器多了一个名为“mysqltest”的链接服务器
在这里插入图片描述
三、建立允许远程访问连接操作

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

四、建立LOOPBACK 服务器链接

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

五、设置服务器链接选项,阻止SQL Server 由于远过程调用而将本地事务提升为分布事务(重点)

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

到这就可以测试一下这个能不能链接上

select * from OPENQUERY(MYSQLTEST,'SELECT * FROM users ')

六、建立存储过程和触发器

1、insert

--存储过程
USE [master]
SET ANSI_NULLS ON
SET QUOTED_IDENTIFIER ON
CREATE PROCEDURE [dbo].[insert_user]
@id INT ,
@name varchar(50)
BEGIN
                 SET NOCOUNT ON
                                insert OPENQUERY(MYSQLTEST,'SELECT * FROM user')(id,name) values(@id,@name);
                 SET NOCOUNT OFF
--触发器
USE [master]
SET ANSI_NULLS ON
SET QUOTED_IDENTIFIER ON
CREATE TRIGGER [dbo].[insert_trigger] ON [master].[dbo].[user]
FOR INSERT
DECLARE @id INT,
                                 @name VARCHAR(50)
                                 SELECT @id =id, @name=name FROM INSERTED;
                                 BEGIN
                                                 EXEC loopback .master. dbo.insert_user @id, @name;

2、update

--存储过程
CREATE PROCEDURE [dbo].[update_user]
@id INT ,
@name varchar(50)
BEGIN
                 SET NOCOUNT ON
                                 UPDATE OPENQUERY (MYSQLTEST,'SELECT * FROM users ') set id =@id where name =@name
                 SET NOCOUNT OFF
--触发器
CREATE TRIGGER [dbo].[update_trigger] ON [master].[dbo].[user]
FOR UPDATE
DECLARE @id INT,
                                 @name VARCHAR(50)
         SELECT @id =id, @name=name FROM INSERTED;
BEGIN
                 EXEC loopback .master. dbo.update_user @id, @name;

3、delete

--存储过程
CREATE PROCEDURE [dbo].[delete_user]
@id INT 
BEGIN
                 SET NOCOUNT ON
                                 DELETE OPENQUERY ((MYSQLTEST, ,'SELECT * FROM users ') where id =@id
                 SET NOCOUNT OFF
--触发器
CREATE TRIGGER [dbo].[delete_trigger] ON [master].[dbo].[user]
FOR DELETE
                 DECLARE @ID INT
                 SELECT @ID =ID FROM DELETED ;
BEGIN
	 EXEC loopback .master. dbo.delete_user @id;

给存储过程添加异常机制

如果遇到不正确的数据导致无法更新同步,则可以做一个异常机制记录。在sqlserver中建一张记录异常的表:LogTable
这里用insert做示范

CREATE PROCEDURE [dbo].[insert_user]
@id INT ,
@name varchar(50)
BEGIN
                 SET NOCOUNT ON
                 BEGIN  try
                                insert OPENQUERY(MYSQLTEST,'SELECT * FROM user')(id,name) values(@id,@name);
                 END try
                 BEGIN catch
INSERT INTO LogTable values(ERROR_NUMBER(),ERROR_SEVERITY(),ERROR_STATE(),ERROR_PROCEDURE(), ERROR_LINE() ,ERROR_MESSAGE());
                 END catch
                 SET NOCOUNT OFF

这样就可以把一些错误的数据记录在LogTable 表里

//MSDTC不可用解决办法
报错MSDTC(分布式交易协调器),协调跨多个数据库、消息队列、文件系统等资源管理器的事务。该服务的进程名为Msdtc.exe,该进程调用系统Microsoft Personal Web Server和Microsoft SQL Server。该服务用于管理多个服务器 .
位置:控制面板--管理工具--服务--Distributed Transaction Coordinator
依存关系:Remote Procedure Call(RPC)和Security Accounts Manager
建议:一般家用计算机涉及不到,除非你启用Message Queuing服务,可以停止。
解决办法: 1. 在windows控制面版–>管理工具–>服务–>Distributed Transaction Coordinator–>属性–>启动
2.在CMD下运行"net start msdtc"开启服务后正常。
注:如果在第1步Distributed Transaction Coordinator 无法启动,则是因为丢失了日志文件,重新创建日志文件,再启动就行了。重新创建 MSDTC 日志,并重新启动服务的步骤如下:
(1) 单击"开始",单击"运行",输入 cmd 后按"确定"。
(2) 输入:msdtc -resetlog (注意运行此命令时,不要执行挂起的事务)
(3) 最后输入:net start msdtc 回车,搞定!

SqlServer数据实时同步到mysql一、首先要装一个ODBC的驱动用来建立mysql的连接。注意:一定要用32位的可用cmd执行这个命令:c:\windows\syswow64\odbcad32.exe配置【用户DSN】和【系统DSN】二、打开sqlserver建立链接服务器右键新建链接服务器1、点击【常规】填上在ODBC建立的服务器名称,访问接口选择ODBC2、点击【安全性】选择最后一个,并填上mysql的账户密码最后点确定就会看到链接服务器多了一个名为“mysqlt
详细讲解Sql Server 数据实时同步Mysql的操作步骤以及注意事项,采完坑后的总结 步骤1:创建需要同步数据库和表 步骤2:安装Mysql Connector 步骤3:配置Mysql ODBC数据源 ......
SQL Server 是一个值得信赖的老牌数据库系统,自从 1988 年由 Microsoft、Sybase 和 Ashton-Tate 三家公司共同推出之后就一直不断迭代更新。而如今我们提到 SQL Server 通常是指 Microsoft 从 SQL Server 2000 之后的版本。至今 SQL Server 家族已经非常繁茂涵盖了 云上(Azure SQL Server)、IoT 设备(边缘 SQL Server)、以及经典版本(本地 SQL Server)。 实现 SQL Server
数据同步是系统集成,应用交互中经常遇到的需求,主要分为实时同步和定时同步; 实时同步是通过解析数据库的事务日志,取得SQL命令,然后到目标库回放操作,实现数据同步。 异构数据库间的实时同步实现难度是比较大的,因为事务日志格式是千差万别的。 实时同步一般用在灾备等场景中。 定时同步对时效性要求不高,主要用在数据汇聚,数据集成,数据统计等场景中,通常采用查询数据集 写入目标库的方式,定时同步的场景也比较复杂,有多对一,一对多,多对多等。 下面通过使用TreeSoft软件,配置SQL S...
何为自治事务(Autonomous Transaction)?简单的说,如果在会话中调用一个过程,则此过程会运行在此会话当前的事务作用域中;而自治事务可以让这个过程运行在一个独立的事务作用域中,使用其不受外部事务(也就是调用此过程的会话的当前事务)的影响,可以被独立的回滚/提交。为了方便理解,举个例子:use tempdbgoifobject_id('emps')isnotnull droptable emps;gocreatetable emps( id intidentity, names
解决方案1. 利用Navicat 15 for MySQL从SQL Server同步mysql2. 利用xorm-reverse工具生成数据库表结构3. 构建用于存储每个表的最新ID数据库4. 监测数据库变化(golang代码实现)4.1. 目录结构4.2.各个文件内容参考资料 1. 利用Navicat 15 for MySQL从SQL Server同步mysql 具体操作步骤 2. 利用xorm-reverse工具生成数据库表结构 按照xorm-reverse安装步骤,生成models文件夹,也便知道
SyncNavigator v8.6.2 SyncNavigator是一款功能强大的数据同步软件,适用于SQLSERVER, MySQL,具有自动/定时同步数据、无人值守、故障自动恢复、同构/异构数据同步、断点续传和增量同步等功能,支持Windows xp以上所有操作系统,适用于大容量数据库快速同步。 安装包下载地址:https://www.syncnavigator.cn/Setup.zip 帮助文档地址:https://www.syncnavigator.cn/Help_zh-CN.chm
SyncNavigator是一款功能强大的数据同步软件,适用于SQLSERVER, MySQL,具有自动/定时同步数据、无人值守、故障自动恢复、同构/异构数据同步、断点续传和增量同步等功能,支持Windows xp以上所有操作系统,适用于大容量数据库快速同步。 安装包下载地址:https://www.syncnavigator.cn/Setup.zip 帮助文档地址:https://www.syncnavigator.cn/Help_zh-CN.chm Web文档地址:https://www...
ODBC数据管理器->系统DSN->添加->mysql ODBC 5.3 ANSI driver->填入data source name如jt,mysql的ip、用户名、密码即可 --新建链接服务
在将SQL Server实时同步MySQL的过程中,可以采用多种方法来实现。以下是一种可能的解决方案: 1. 数据库触发器:可以在SQL Server中创建一个触发器,以监控对其表的数据更改。每当有数据更改时,触发器会将更改的数据推送到MySQL服务器。 2. 双向复制:可以使用数据库复制技术,将SQL Server和MySQL之间建立双向数据复制的链接。通过配置适当的复制规则,可以实现实时同步。 3. 第三方工具:有一些第三方工具可以帮助实现SQL Server到MySQL实时同步。这些工具通常提供简单的配置界面,使用户能够轻松设置同步规则。 无论采用哪种方法,都需要确保两个数据库之间的数据类型和结构是兼容的。另外,还需要考虑网络延迟和数据冲突等因素,以确保同步的准确性和稳定性。 总之,实现SQL Server到MySQL实时同步需要仔细策划和配置,并且根据实际情况选择最适合的方法。同时,也需要进行定期的监测和维护,以保证同步的正常运行。
 
推荐文章