SQL Server 复制是一种将数据和数据库对象从一个数据库复制和分发到另一个数据库,并在数据库之间进行同步以保持一致性的技术。它主要分为三种类型:事务复制、合并复制 和 快照复制。
下面我将通过一个事务复制的示例,详细说明其配置步骤。
SRV-SQL01,数据库 AdventureWorksSRV-SQL02,数据库 AdventureWorks_ReplicaSales.SalesOrderHeader 和 Sales.SalesOrderDetail 表SRV-SQL01。
右键单击 “复制” 文件夹,选择 “配置分发”。
在配置分发向导中:\\SRV-SQL01\ReplSnapshot),确保订阅服务器有权限访问。AdventureWorks。
选择发布类型:“事务性发布”。
选择要发布的表和其他对象:Sales.SalesOrderHeader 和 Sales.SalesOrderDetail。DOMAIN\SQLReplAgent)。AdventureWorks_Sales_Pub。
步骤 3: 创建订阅
展开 “本地发布” → 右键单击新创建的发布 AdventureWorks_Sales_Pub → “新建订阅”。
选择发布服务器和发布。
选择分发代理位置:SRV-SQL02 实例。
选择目标数据库:AdventureWorks_Replica,或创建新数据库。DOMAIN\SQLReplAgent)。AdventureWorks 中插入或更新 Sales.SalesOrderHeader 表的记录。AdventureWorks_Replica 中查询对应表,确认数据已同步。-- 在发布服务器上执行
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)监控状态和错误。
清理任务:定期清理分发数据库的历史数据,防止过度增长。
以上示例为事务复制的完整配置流程。根据实际需求,可调整复制类型、筛选条件和代理计划。