东莞市文章资讯

SQL Server常见复制功能的配置示例详解

2026-03-30 19:56:01 浏览次数:2
详细信息

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

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

场景设定

配置步骤

步骤 1: 配置分发服务器(在发布服务器上执行) 在 SSMS 中,连接到发布服务器 SRV-SQL01。 右键单击 “复制” 文件夹,选择 “配置分发”。 在配置分发向导中: 步骤 2: 创建发布 展开 “复制” → 右键单击 “本地发布”“新建发布”。 选择源数据库 AdventureWorks。 选择发布类型:“事务性发布”。 选择要发布的表和其他对象: 可选:添加筛选器(例如仅复制特定年份的数据)。 设置快照代理计划: 设置代理安全性: 输入发布名称:AdventureWorks_Sales_Pub步骤 3: 创建订阅 展开 “本地发布” → 右键单击新创建的发布 AdventureWorks_Sales_Pub“新建订阅”。 选择发布服务器和发布。 选择分发代理位置: 选择订阅服务器:单击 “添加订阅服务器”,选择 SRV-SQL02 实例。 选择目标数据库: 设置分发代理安全性: 设置同步计划: 初始化订阅: 完成向导。

验证复制

查看复制状态 测试数据同步

关键脚本示例

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)监控状态和错误。 清理任务:定期清理分发数据库的历史数据,防止过度增长。

复制类型选择指南

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

相关推荐