通过MS SQL SERVER实现公司间数据同步
1. 因业务需要,需要针对不同企业的DB数据库服务器数据同步,即指定的几个数据字段保持数据一致。
2. 同步就是保持两个表数据一致过程,但在整体业务设计时要遵循分布式CAP定理( CAP theorem: 一致性(Consistency)、可用性(Availability)、分区容错性(Partition tolerance))。
3.要整体步骤清晰,尽量不要几步并一步进行操作,因为同步数据一般都是在不同的地域,不同的服务器,服务器所属不同企业,权限一般都限制的很死,步骤不清晰出问题很难排错,并因此在不同企业间踢皮球,扯皮。
4.相关过程示意图如下(以Microsoft SQL Server为例,本次提供思路不提供代码,有空再把代码补全):
在本地服务器DB Server1上建立需要的数据View即视图(即整理要用的数据);
在本地服务器DB Server1上建立远程服务器DBserver2上的连接(服务器对象-->链接服务器)
数据源就是远程服务器DB Server2,新建链接服务器-->在 常规 里面设置远程服务器地址-->在 安全性 里面设置远程DB链接用户和密码
在本地服务器DB Server1上建立需要同步的数据表
CREATE TABLE [dbo].[Table1](
[ItemID] [int] NOT NULL,
[ItemName] [varchar](100) NULL
) ON [PRIMARY]
在远程服务器DB Server2上建立需要同步的数据表(因为是数据同步,所以Table2与上面的Table1结构相同。最好相同,否则逻辑上容易乱)
CREATE TABLE [dbo].[Table2](
[ItemID] [int] NOT NULL,
[ItemName] [varchar](100) NULL
) ON [PRIMARY]
在SQL Server代理商建立作业,并设置定期执行
新建作业,在常规设置作业名称,所有者,其他默认。
在作业的步骤里面,新建作业步骤
点击 作业步骤 的 新建 按钮,进入 新建作业步骤 窗口,填入步骤名称,选择数据库,粘贴同步执行SQL代码到 命令(M)空白窗口。
(同步过程代码:从view中到DB Server1的表中,再同DB Server1到DB Server2的表中,执行的SQL代码调试好再粘贴到命令的空白处。)
在作业属性点击计划,进入 作业计划属性。设置此处的作用是定期同步执行同步SQL代码,具体时间间隔根据业务进行设置。
查看作业历史记录,有如下执行日志,证明同步的过程成功,不同企业数据同步顺利完成。
(结束)