在SQL Server 2008中配置快照复制是一种相对简单且直观的方法,适用于数据变化不频繁的场景。快照复制会定期生成数据的完整快照,并将其分发到订阅服务器。以下是详细的配置步骤:
1. 配置分发服务器
- 打开SQL Server Management Studio (SSMS):
- 启动SSMS并连接到你的SQL Server 2008实例。
- 配置分发数据库:
- 在对象资源管理器中,展开服务器节点,右键点击“复制”节点,选择“配置分发”。
- 在“配置分发向导”中,选择“此服务器作为分发服务器”。
- 选择或创建分发数据库。
- 指定快照文件夹路径。这是存储快照文件的位置,可以是本地路径或网络共享路径。
- 完成向导。
2. 配置发布服务器
- 配置发布:
- 在对象资源管理器中,右键点击“复制”节点,选择“新建发布”。
- 选择要发布的数据库,然后点击“下一步”。
- 选择快照复制类型,然后点击“下一步”。
- 选择要发布的表和列。可以选择整个表或特定的列。
- 配置快照代理。指定快照代理的计划,例如每天凌晨1点生成快照。
- 设置发布名称和其他选项,然后完成向导。
3. 创建订阅
- 创建推送订阅:
- 在对象资源管理器中,展开“复制”节点,右键点击“发布”,选择“新建推送订阅”。
- 选择要创建订阅的发布,然后点击“下一步”。
- 选择订阅服务器和订阅数据库。订阅服务器可以是同一台服务器或另一台服务器。
- 配置订阅属性,如同步计划和代理账户。
- 选择初始化订阅的方式。可以选择立即初始化或稍后初始化。
- 完成向导。
- 创建拉取订阅:
- 在订阅服务器上,打开SSMS并连接到订阅服务器。
- 在对象资源管理器中,右键点击“复制”节点,选择“新建拉取订阅”。
- 选择发布服务器和发布的名称,然后点击“下一步”。
- 选择订阅数据库。
- 配置订阅属性,如同步计划和代理账户。
- 选择初始化订阅的方式。可以选择立即初始化或稍后初始化。
- 完成向导。
示例脚本
以下是一些示例T-SQL脚本,用于配置快照复制:
1. 配置分发服务器
-- 配置分发数据库
EXEC sp_adddistributor @distributor = @@SERVERNAME, @password = N'distributor_password';
-- 配置分发数据库
EXEC sp_adddistributiondb @database = N'distribution', @data_folder = N'C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA', @log_folder = N'C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA', @log_file_size = 2, @min_distretention = 0, @max_distretention = 72, @history_retention = 48, @security_mode = 1;
-- 配置发布服务器
EXEC sp_adddistpublisher @publisher = @@SERVERNAME, @distribution_db = N'distribution', @security_mode = 1;
2. 配置发布
-- 启用发布数据库
USE [master];
EXEC sp_replicationdboption @dbname = N'YourDatabase', @optname = N'publish', @value = N'true';
-- 创建快照复制发布
USE [YourDatabase];
EXEC sp_addpublication @publication = N'YourPublication', @description = N'Snapshot replication of YourDatabase', @sync_method = N'concurrent', @retention = 0, @allow_push = N'true', @allow_pull = N'true', @allow_anonymous = N'false', @enabled_for_internet = N'false', @snapshot_in_defaultfolder = N'true', @compress_snapshot = N'false', @ftp_port = 21, @ftp_login = N'anonymous', @allow_subscription_copy = N'false', @add_to_active_directory = N'false', @repl_freq = N'snapshot', @status = N'active', @independent_agent = N'true', @immediate_sync = N'true', @allow_sync_tran = N'false', @autogen_sync_procs = N'false', @allow_queued_tran = N'false', @allow_dts = N'false', @replicate_ddl = N'1', @allow_initialize_from_backup = N'false', @enabled_for_p2p = N'false', @enabled_for_het_sub = N'false';
-- 添加文章
EXEC sp_addarticle @publication = N'YourPublication', @article = N'YourTable', @source_owner = N'dbo', @source_object = N'YourTable', @type = N'table', @description = N'', @creation_script = N'', @pre_creation_cmd = N'drop', @schema_option = 0x000000000803509F, @identityrangemanagementoption = N'manual', @destination_table = N'YourTable', @destination_owner = N'dbo', @status = 24, @vertical_partition = N'false', @partition_options = 0, @action = 'add', @encryptor_algorithm = 0, @compress_snapshot = 0, @force_reinit_subscription = 1, @column_tracking = 0, @filter_clause = N'', @sync_object = N'', @ins_cmd = N'CALL [sp_MSins_dboYourTable]', @del_cmd = N'CALL [sp_MSdel_dboYourTable]', @upd_cmd = N'SCALL [sp_MSupd_dboYourTable]';
3. 创建推送订阅
-- 创建推送订阅
USE [distribution];
EXEC sp_addsubscription @publication = N'YourPublication', @subscriber = N'SubscriberServer', @destination_db = N'SubscriberDatabase', @subscription_type = N'Push', @sync_type = N'automatic', @article = N'all', @update_mode = N'read only', @subscriber_type = 0;
-- 启动快照代理
EXEC sp_startpublication_snapshot @publication = N'YourPublication';
监控和维护
- 监控复制状态:
- 在SSMS中,展开“复制”节点,右键点击“监视复制”。
- 查看复制监视器中的各项指标,如同步状态、错误信息等。
- 维护快照文件夹:
- 定期清理快照文件夹,删除不再需要的快照文件,以节省存储空间。
- 重新初始化订阅:
- 如果需要重新初始化订阅,可以在SSMS中右键点击订阅,选择“重新初始化订阅”。
通过以上步骤,可以在SQL Server 2008中成功配置快照复制,实现数据的定期同步。