欢迎光临白事网
详情描述

SQL Server 复制是一种将数据和数据库对象从一个数据库复制和分发到另一个数据库,并在数据库之间进行同步以保持一致性的技术。它主要分为三种类型:事务复制合并复制快照复制

下面我将通过一个事务复制的示例,详细说明其配置步骤。

场景设定

  • 发布服务器(Publisher): SRV-SQL01,数据库 AdventureWorks
  • 分发服务器(Distributor): 使用与发布服务器相同的实例(本地分发)
  • 订阅服务器(Subscriber): SRV-SQL02,数据库 AdventureWorks_Replica
  • 复制对象: Sales.SalesOrderHeaderSales.SalesOrderDetail

配置步骤

步骤 1: 配置分发服务器(在发布服务器上执行) 在 SSMS 中,连接到发布服务器 SRV-SQL01。 右键单击 “复制” 文件夹,选择 “配置分发”。 在配置分发向导中:
  • 选择 “将 ‘SRV-SQL01’ 用作其自身的分发服务器”(本地分发)。
  • 指定快照文件夹(例如 \\SRV-SQL01\ReplSnapshot),确保订阅服务器有权限访问。
  • 保留其他默认设置,完成向导。
步骤 2: 创建发布 展开 “复制” → 右键单击 “本地发布”“新建发布”。 选择源数据库 AdventureWorks。 选择发布类型:“事务性发布”。 选择要发布的表和其他对象:
  • 展开表,勾选 Sales.SalesOrderHeaderSales.SalesOrderDetail
可选:添加筛选器(例如仅复制特定年份的数据)。 设置快照代理计划:
  • 选择 “立即创建快照”“计划运行快照代理”
设置代理安全性:
  • 单击 “安全设置”,为快照代理和日志读取器代理指定一个具有足够权限的域账户(如 DOMAIN\SQLReplAgent)。
输入发布名称:AdventureWorks_Sales_Pub步骤 3: 创建订阅 展开 “本地发布” → 右键单击新创建的发布 AdventureWorks_Sales_Pub“新建订阅”。 选择发布服务器和发布。 选择分发代理位置:
  • 推送订阅:分发代理在分发服务器上运行(推荐用于中央管理)。
  • 请求订阅:分发代理在订阅服务器上运行。
  • 本例选择 “推送订阅”
选择订阅服务器:单击 “添加订阅服务器”,选择 SRV-SQL02 实例。 选择目标数据库:
  • 在订阅服务器上选择现有数据库 AdventureWorks_Replica,或创建新数据库。
设置分发代理安全性:
  • 指定连接分发服务器和订阅服务器的账户(同上 DOMAIN\SQLReplAgent)。
设置同步计划:
  • 选择 “连续运行”(最小延迟)或自定义计划。
初始化订阅:
  • 选择 “立即” 初始化,从快照开始同步。
完成向导。

验证复制

查看复制状态
  • 在发布服务器上,展开 “复制”“本地发布” → 右键单击发布 → “查看快照代理状态”“查看日志读取器代理状态”
测试数据同步
  • 在发布服务器 AdventureWorks 中插入或更新 Sales.SalesOrderHeader 表的记录。
  • 在订阅服务器 AdventureWorks_Replica 中查询对应表,确认数据已同步。

关键脚本示例

1. 配置分发(T-SQL)
-- 在发布服务器上执行
USE master;
EXEC sp_adddistributor @distributor = N'SRV-SQL01';
EXEC sp_adddistributiondb @database = N'distribution';
EXEC sp_adddistpublisher @publisher = N'SRV-SQL01', @distribution_db = N'distribution';
2. 创建事务发布(T-SQL)
USE AdventureWorks;
EXEC sp_replicationdboption @dbname = N'AdventureWorks', @optname = N'publish', @value = N'true';

-- 添加事务发布
EXEC sp_addpublication 
    @publication = N'AdventureWorks_Sales_Pub',
    @status = N'active',
    @repl_freq = N'continuous',
    @sync_method = N'native';

-- 添加项目(表)
EXEC sp_addpublication_snapshot @publication = N'AdventureWorks_Sales_Pub';
EXEC sp_addarticle 
    @publication = N'AdventureWorks_Sales_Pub',
    @article = N'SalesOrderHeader',
    @source_object = N'SalesOrderHeader',
    @destination_table = N'SalesOrderHeader';

EXEC sp_addarticle 
    @publication = N'AdventureWorks_Sales_Pub',
    @article = N'SalesOrderDetail',
    @source_object = N'SalesOrderDetail',
    @destination_table = N'SalesOrderDetail';
3. 添加推送订阅(T-SQL)
-- 在发布服务器上执行
EXEC sp_addsubscription 
    @publication = N'AdventureWorks_Sales_Pub',
    @subscriber = N'SRV-SQL02',
    @destination_db = N'AdventureWorks_Replica',
    @subscription_type = N'Push';

-- 添加推送订阅代理
EXEC sp_addpushsubscription_agent 
    @publication = N'AdventureWorks_Sales_Pub',
    @subscriber = N'SRV-SQL02',
    @subscriber_db = N'AdventureWorks_Replica',
    @job_login = N'DOMAIN\SQLReplAgent',
    @job_password = 'Password123';

常见问题与注意事项

权限要求:代理账户需具有 db_owner 权限,并对快照共享文件夹有读写权限。 网络与防火墙:确保发布服务器、分发服务器和订阅服务器之间的网络连通性,开放相应端口(默认1433)。 初始化:首次同步需要生成快照,大型数据库可能耗时较长,需规划维护窗口。 监控:使用复制监视器(Replication Monitor)或系统表(如 distribution..MSrepl_errors)监控状态和错误。 清理任务:定期清理分发数据库的历史数据,防止过度增长。

复制类型选择指南

  • 事务复制:适用于需要低延迟、增量更新的场景(如报表服务器)。
  • 合并复制:适用于双向同步、移动端或断开连接的场景(如分支机构)。
  • 快照复制:适用于数据变化不频繁、一次性批量更新的场景。

以上示例为事务复制的完整配置流程。根据实际需求,可调整复制类型、筛选条件和代理计划。

相关帖子
面对琳琅满目的教育产品,家长如何辨别其真实价值避免无效花费?
面对琳琅满目的教育产品,家长如何辨别其真实价值避免无效花费?
瓶装水、桶装水与过滤后的自来水,在长期饮用成本上有何差异?
瓶装水、桶装水与过滤后的自来水,在长期饮用成本上有何差异?
东莞市安卓app开发&品牌网站定制开发,优秀设计团队
东莞市安卓app开发&品牌网站定制开发,优秀设计团队
中外跨国婚姻生育的宝宝,国籍应该如何选择与认定?
中外跨国婚姻生育的宝宝,国籍应该如何选择与认定?
nginx长连接与短连接性能对比分析
nginx长连接与短连接性能对比分析
天津市丧事一站式服务|白事入殓服务,为家属解决后顾之忧
天津市丧事一站式服务|白事入殓服务,为家属解决后顾之忧
夏季高温或冬季严寒等极端天气,对宠物托运计划会产生哪些具体影响?
夏季高温或冬季严寒等极端天气,对宠物托运计划会产生哪些具体影响?
外嫁女与兄弟在宅基地继承上发生纠纷,法律通常会如何裁决?
外嫁女与兄弟在宅基地继承上发生纠纷,法律通常会如何裁决?
北京市丧葬服务公司|殡葬悼念会布置,收费透明,1小时上门
北京市丧葬服务公司|殡葬悼念会布置,收费透明,1小时上门
绥化市苹果app开发#网站设计正规公司,收费标准
绥化市苹果app开发#网站设计正规公司,收费标准
秦皇岛市精准获客引流&java开源商城二次开发,定制开发
秦皇岛市精准获客引流&java开源商城二次开发,定制开发
从进化的角度看,为什么人类久坐会带来这么多健康问题与不适?
从进化的角度看,为什么人类久坐会带来这么多健康问题与不适?
比较消费券与现金补贴,哪种方式更能有效刺激社会总体消费需求?
比较消费券与现金补贴,哪种方式更能有效刺激社会总体消费需求?
宣城市殡葬一条龙公司-丧葬一站式服务,丧葬灵棚策划
宣城市殡葬一条龙公司-丧葬一站式服务,丧葬灵棚策划
在缴费阶段,个人养老金账户如何帮助我们合理减少当年的个人所得税负担?
在缴费阶段,个人养老金账户如何帮助我们合理减少当年的个人所得税负担?
如果生物识别模板数据泄露,会比密码泄露更严重吗?2026年我们该如何防范?
如果生物识别模板数据泄露,会比密码泄露更严重吗?2026年我们该如何防范?
在气候变化背景下,未来“超级台风”或“极端暴雨”的破坏力会更强吗?
在气候变化背景下,未来“超级台风”或“极端暴雨”的破坏力会更强吗?
从经济学视角看,家庭内部的无偿照护工作创造了哪些难以估量的社会价值?
从经济学视角看,家庭内部的无偿照护工作创造了哪些难以估量的社会价值?
日常通勤中频繁使用人脸识别门禁,怎样的穿着既得体又便于快速通过?
日常通勤中频繁使用人脸识别门禁,怎样的穿着既得体又便于快速通过?
瓦房店市AI数字人直播带货#b2b网站开发,高端网站开发设计
瓦房店市AI数字人直播带货#b2b网站开发,高端网站开发设计