实现两个SQL Server同步的步骤
流程图
graph LR
A(开始) --> B(创建登陆名和用户)
B --> C(创建数据库备份)
C --> D(还原数据库备份到目标服务器)
D --> E(创建发布者)
E --> F(创建订阅者)
F --> G(创建分发器)
G --> H(启动分发器代理)
H --> I(添加订阅者)
I --> J(启动同步)
J --> K(同步完成)
K --> L(结束)
甘特图
gantt
title SQL Server同步甘特图
dateFormat YYYY-MM-DD
section 创建登陆名和用户
创建登陆名和用户 :done, 2022-01-01, 1d
section 创建数据库备份
创建数据库备份 :done, 2022-01-02, 1d
section 还原数据库备份到目标服务器
还原数据库备份到目标服务器 :done, 2022-01-03, 1d
section 创建发布者
创建发布者 :done, 2022-01-04, 2d
section 创建订阅者
创建订阅者 :done, 2022-01-06, 2d
section 创建分发器
创建分发器 :done, 2022-01-08, 1d
section 启动分发器代理
启动分发器代理 :done, 2022-01-09, 1d
section 添加订阅者
添加订阅者 :done, 2022-01-10, 1d
section 启动同步
启动同步 :done, 2022-01-11, 1d
section 同步完成
同步完成 :done, 2022-01-12, 1d
section 结束
结束 :done, 2022-01-13, 1d
步骤及代码示例
-
创建登陆名和用户
-- 创建登陆名 CREATE LOGIN [登录名] WITH PASSWORD=N'密码', DEFAULT_DATABASE=[数据库名], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF GO -- 创建用户 USE [数据库名] GO CREATE USER [用户名] FOR LOGIN [登录名] WITH DEFAULT_SCHEMA=[dbo] GO
-
创建数据库备份
-- 创建数据库备份 BACKUP DATABASE [数据库名] TO DISK = N'备份文件路径' WITH NOFORMAT, NOINIT, NAME = N'备份集名称', SKIP, NOREWIND, NOUNLOAD, STATS = 10 GO
-
还原数据库备份到目标服务器
-- 还原数据库备份到目标服务器 RESTORE DATABASE [目标数据库名] FROM DISK = N'备份文件路径' WITH FILE = 1, MOVE N'逻辑数据库名' TO N'目标数据文件路径', NOUNLOAD, REPLACE, STATS = 10 GO
-
创建发布者
-- 创建发布者 EXEC sp_adddistributor @distributor = N'发布者名称' GO
-
创建订阅者
-- 创建订阅者 USE [目标数据库名] GO EXEC sp_addsubscriber @subscriber = N'订阅者名称', @subscriber_db = N'目标数据库名' GO
-
创建分发器
-- 创建分发器 USE [发布者数据库名] GO EXEC sp_adddistributiondb @database = N'发布者数据库名', @data_folder = N'分发数据文件夹路径', @log_folder = N'分发日志文件夹路径', @backup_folder = N'分发备份文件夹路径', @publisher = N'发布者名称', @sync_mode = N'辅助', @distributor = N'发布者名称' GO
-
启动分发器代理
-- 启动分发器代理 USE [发布者数据库名] GO EXEC sp_adddistributor_agent @distributor = N'发布者名称', @job_login = NULL, @job_password = NULL, @from_publisher = 1, @to_distributor = 0, @from_distributor = 1, @to_publisher = 0 GO
-
添加订阅者
-- 添加