You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用SQL查询实现SQL Server表级镜像/复制 单条新增行跨库同步

SQL Server跨库单条新增行同步解决方案

方案1:AFTER INSERT 触发器(实时同步首选)

该方案在源表插入操作完成后自动触发,仅同步本次新增的行,无全表扫描开销,完美匹配行级实时镜像需求。
创建触发器代码:

USE Tasks
GO

CREATE TRIGGER trg_Patients_InsertSync
ON dbo.Patients
AFTER INSERT
AS
BEGIN
    SET NOCOUNT ON;

    -- inserted 为SQL Server内置临时表,仅存储本次插入操作产生的新增行
    INSERT INTO Task1.dbo.Patients (FirstName, Lastname, Address, ContactNo, Gender, DateOfBirth)
    SELECT FirstName, Lastname, Address, ContactNo, Gender, DateOfBirth
    FROM inserted;
END
GO

注意事项

  • 需确保Task1.dbo.Patients和源表的对应字段类型、长度完全匹配
  • 若需要同时同步更新、删除操作,可将触发条件修改为AFTER INSERT, UPDATE, DELETE,配合deleted临时表实现变更全同步
  • 触发器会略微增加源表插入操作的耗时,适合对插入性能要求不极端的场景

方案2:增量字段定时同步(非侵入式可选)

如果不希望触发器影响业务插入性能,可选择定时同步方案,前提是源表存在自增主键、创建时间等可标识新增行的字段,示例以自增主键PatientId为例:

INSERT INTO Task1.dbo.Patients (FirstName, Lastname, Address, ContactNo, Gender, DateOfBirth)
SELECT t.FirstName, t.Lastname, t.Address, t.ContactNo, t.Gender, t.DateOfBirth
FROM Tasks.dbo.Patients t
WHERE t.PatientId > ISNULL((SELECT MAX(PatientId) FROM Task1.dbo.Patients), 0)

注意事项

  • 该方案无业务侵入,不会影响源表的写入性能
  • 需搭配SQL Server代理作业实现定时执行,同步时延取决于作业执行频率

内容的提问来源于stack exchange,提问作者Saqlain Mushtaq

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 07:39:04