|
/*************************************【创建发布】**************************************/
/*【实例:可更新订阅】
* A 为发布数据库,id为每个表的主键
* B,C 为订阅数据库
* A中符合条件 [id % 2 = 0] 的同步到B中
* A中符合条件 [id % 2 = 1] 的同步到C中
* 以下以 B 创建发布订阅
当前发布数据库:[mytest]
当前发布数据库:[mytestA]
发布名称,(发布数据库名),(订阅数据库名),筛选条件
*/
-- 作为发布的数据库
use [mytest]
-- 设置指定数据库的复制数据库选项(发布服务器或订阅服务器执行)
-- http://msdn.microsoft.com/zh-cn/library/ms188769.aspx
exec sys.sp_replicationdboption @dbname = N'mytest', @optname = N'publish', @value = N'true'
go
-- 为给定分发服务器添加队列读取器代理(在分发库或发布库执行)(每个实例默认只1个,已存在可不须再执行)
-- http://msdn.microsoft.com/ZH-CN/LIBRARY/ms189517
exec sys.sp_addqreader_agent @job_login = N'KK\SqlReplicator', @job_password = N'123456', @job_name = null, @frompublisher = 1
go
-- 为给定数据库添加日志读取器代理(在发布数据库执行)(每个数据库默认只1个,已存在可不须再执行)
-- http://technet.microsoft.com/zh-cn/library/ms189516.aspx
exec sys.sp_helplogreader_agent @publisher = null --查看当前数据库存在的日志代理
exec sys.sp_addlogreader_agent @job_login = N'KK\SqlReplicator', @job_password = N'123456', @publisher_security_mode = 1, @job_name = null
go
/***************************【创建发布:以下用于1库多发布】******************************/
-- 添加(可更新订阅)事务发布(在发布数据库执行)
-- http://msdn.microsoft.com/zh-cn/library/ms188738(v=sql.100).aspx
exec sys.sp_addpublication
@publication = N'tran_repl', --【指定发布名称】
@description = N'来自发布服务器“”的数据库“mytest”的具有可更新订阅的事务发布。',
@sync_method = N'concurrent', --同步模式:本机模式大容量复制程序输出
@retention = 0, --订阅活动的保持期(小时):默认值为336小时;0:订阅永不过期
@allow_push = N'true', --推送订阅
@allow_pull = N'true', --允许创建请求订阅
@allow_anonymous = N'false', --不可创建匿名订阅
@enabled_for_internet = N'false', --非Internet发布
@snapshot_in_defaultfolder = N'false', --不指定快照默认文件夹,须设置@alt_snapshot_folder
@alt_snapshot_folder = N'E:\TempFile\ReplData', --指定快照的备用文件夹的位置
@compress_snapshot = N'false', --不压缩快照
@ftp_port = 21, --默认分发服务器的FTP服务的端口号:21
@ftp_login = N'anonymous', --默认用于连接到 FTP 服务的用户名:anonymous
@allow_subscription_copy = N'false', --禁用复制订阅此发布的订阅数据库
@add_to_active_directory = N'false', --(已不推荐使用)
@repl_freq = N'continuous', --复制频率的类型:基于日志的事务的输出
@status = N'active', --发布数据可立即用于订阅服务器
@independent_agent = N'true', --【独立分发代理】
@immediate_sync = N'false', --每次运行快照代理时不为发布创建同步文件
@allow_sync_tran = N'true', --允许使用【立即更新订阅】
@autogen_sync_procs = N'true', --在发布服务器上生成更新订阅的【同步存储过程】
@allow_queued_tran = N'true', --在订阅服务器中启用更改的队列
@allow_dts = N'false', --不允许数据转换
@conflict_policy = N'sub wins', --排队更新订阅服务器选项时所遵从的冲突解决策略:【订阅入选】
@centralized_conflicts = N'true', --在发布服务器上存储冲突记录
@conflict_retention = 14, --冲突保持期(天)
@queue_type = N'sql', --使用的队列类型:默认SQL Server存储事务
@replicate_ddl = 1, --【支持架构复制】
@allow_initialize_from_backup = N'false', --不允许用备份初始化订阅
@enabled_for_p2p = N'false', --非对等复制
@enabled_for_het_sub = N'false' --只支持SQL Server订阅服务器
go
-- 为指定的发布创建快照代理(在发布数据库执行)
-- http://msdn.microsoft.com/zh-cn/library/ms174958(v=sql.100)
exec sys.sp_addpublication_snapshot
@publication = N'tran_repl',
@frequency_type = 1,
@frequency_interval = 0,
@frequency_relative_interval = 0,
@frequency_recurrence_factor = 0, |