JOB+MERGE 跨服务器同步数据

为了解决单服务器压力,将库分服务器部署,但是原来用触发器实现的表数据同步就实现不了了。
因为总监老大不允许 开启分布式事务(MSDTC),我又不想为了一个几千行的基础数据做复制订阅。
于是乎决定用 JOB+MERGE的方式实现。
第一步 创建一个存储过程(当然也可以直接写到JOB中)
CREATE PROCEDURE PRC_SYNC_DATA
AS
BEGIN
	SET NOCOUNT ON
	--跨库跨服务器同步A到B (A,B 表结构相同)
	--通过条件判断 相同则 更新  不同则插入
	merge   [guagua_vas_statistics].[dbo].[t_base_goods] t --要更新的目标表 
	using [192.168.1.75,18991].[guagua_goods].[dbo].[t_base_goods] s --源表 
	on t.base_goods_id=s.base_goods_id --更新条件(即主键) 
	when matched --如果主键匹配,更新 
	then update set t.name=s.name,t.unit_name=s.unit_name
					,t.depletable=s.depletable,.......
	when not matched 
	then insert values([base_goods_id],[name],[unit_name],[depletable],....)
	when not matched by source then 
		delete ; --目标中存在源中没有的记录时删除。此处by source不能省略 
		

END		

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

©️2022 CSDN 皮肤主题:游动-白 设计师:白松林 返回首页

打赏作者

Felixzhaowenzhong

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值