sp_changemergepublication (Transact-SQL)
更改合并发布的属性。此存储过程在发布服务器上对发布数据库执行。
语法
sp_changemergepublication [ @publication= ] 'publication'
[ , [ @property= ] 'property' ]
[ , [ @value= ] 'value' ]
[ , [ @force_invalidate_snapshot = ] force_invalidate_snapshot ]
[ , [ @force_reinit_subscription = ] force_reinit_subscription ]
参数
[ @publication=\] 'publication'
发布的名称。publication 的数据类型为 sysname,无默认值。[ @property=\] 'property'
给定发布的要更改的属性。property 的数据类型为 sysname,可以是下表所列值之一。[ @value=\] 'value'
所指定属性的新值。value 的数据类型为 nvarchar(255),可以是下表所列值之一。下表说明了可以更改的发布属性以及对这些属性值的限制。
属性
值
说明
allow_anonymous
true
允许匿名订阅。
false
不允许匿名订阅。
allow_partition_realignment
true
将删除指令发送到订阅服务器,删除不再属于订阅服务器分区的数据以反映分区更改结果。这是默认行为。
false
旧分区中的数据保留在订阅服务器上,发布服务器上对此数据所做的更改不会复制到此订阅服务器。相反,在订阅服务器上进行的更改将复制到发布服务器。此属性用于保留旧分区中的订阅数据,以便满足用户访问历史数据的需要。
allow_pull
true
给定的发布允许请求订阅。
false
给定的发布不允许请求订阅。
allow_push
true
给定的发布允许推送订阅。
false
给定的发布不允许推送订阅。
allow_subscriber_initiated_snapshot
true
订阅服务器可以启动快照进程。
false
订阅服务器无法启动快照进程。
allow_subscription_copy
true
可以复制订阅此发布的订阅数据库。
false
不可以复制订阅此发布的订阅数据库。
allow_synctoalternate
true
允许备用同步伙伴与此发布服务器进行同步。
false
禁止备用同步伙伴与此发布服务器进行同步。
allow_web_synchronization
true
可以通过 HTTPS 同步订阅。
false
不能通过 HTTPS 同步订阅。
alt_snapshot_folder
指定快照的备用文件夹的位置。
automatic_reinitialization_policy
1
在重新初始化订阅之前,从订阅服务器上载更改。
0
不先上载更改就重新初始化订阅。
centralized_conflicts
true
所有冲突记录都存储在发布服务器上。如果更改此属性,则必须重新初始化现有订阅服务器。
false
冲突记录存储在冲突解决中落选的服务器上。如果更改此属性,则必须重新初始化现有订阅服务器。
compress_snapshot
true
备用快照文件夹中的快照将压缩为 CAB 格式。不能压缩默认快照文件夹中的快照。若要更改此属性,则需要新的快照。
false
默认情况下,不压缩快照。若要更改此属性,则需要新的快照。
conflict_logging
publisher
在发布服务器上存储冲突记录。
subscriber
在导致冲突的订阅服务器上存储冲突记录。SQL Server Compact 3.5 SP1 订阅服务器不支持此属性。
both
在发布服务器和订阅服务器上都存储冲突记录。
conflict_retention
一个 int 值,用于指定冲突的保持期(以天为单位)。将 conflict_retention 设置为 0 表示不需要清除冲突。
description
对发布的说明。
dynamic_filters
true
根据动态子句筛选发布。
false
不对发布进行动态筛选。
enabled_for_internet
true
为 Internet 启用发布。可以使用文件传输协议 (FTP) 将快照文件传输到订阅服务器。发布的同步文件放在 C:\Program Files\Microsoft SQL Server\MSSQL\Repldata\ftp 目录中。
false
不为 Internet 启用发布。
ftp_address
分发服务器的 FTP 服务的网络地址。指定存储发布快照文件的位置。
ftp_login
用于连接到 FTP 服务的用户名。
ftp_password
用于连接到 FTP 服务的用户密码。
ftp_port
分发服务器的 FTP 服务的端口号。指定存储发布快照文件的 FTP 站点的 TCP 端口号。
ftp_subdirectory
指定当发布支持使用 FTP 传播快照时用于创建快照文件的位置。
generation_leveling_threshold
int
指定生成中包含的更改次数。生成是指已传递给发布服务器或订阅服务器的更改集合。有关详细信息,请参阅合并复制如何跟踪和枚举更改。
keep_partition_changes
true
对同步进行优化,只有所包含的一些行位于已更改分区中的订阅服务器才会受影响。若要更改此属性,则需要新的快照。
false
不优化同步,分区中的数据发生更改时,对发送到订阅服务器的分区进行验证。若要更改此属性,则需要新的快照。
max_concurrent_merge
一个 int 值,表示可对发布运行的最大并发合并进程数。如果为 0,则没有限制。如果计划同时运行的合并进程数超出这一数值,则将多出的作业放在队列中等待,直到当前的合并进程完成。
max_concurrent_dynamic_snapshots
一个 int 值,表示可对使用参数化行筛选器的合并发布并发运行的最大快照会话数,这些会话将生成筛选的数据快照。如果为 0,则没有限制。如果计划同时执行的快照进程数超出这一数值,则多出的作业将被放到队列中等待,直到当前运行的合并进程完成。
post_snapshot_script
指定指向 .sql 文件位置的指针。在初始同步过程中应用了所有其他复制的对象脚本和数据之后,分发代理或合并代理才运行快照后脚本。若要更改此属性,则需要新的快照。
pre_snapshot_script
指定指向 .sql 文件位置的指针。在订阅服务器上应用快照时,合并代理将在运行任何复制的对象脚本之前运行快照前脚本。若要更改此属性,则需要新的快照。
publication_compatibility_level
100RTM
SQL Server 2008
90RTM
SQL Server 2005
80SP3
SQL Server 2000 SP3
80SP2
SQL Server 2000 SP2
80SP1
SQL Server 2000 SP2
80RTM
SQL Server 2000
70 SP4
SQL Server 7.0 SP4
70SP3
SQL Server 7.0 SP3
70SP2
SQL Server 7.0 SP2
70SP1
SQL Server 7.0 SP1
70RTM
SQL Server 7.0
publish_to_activedirectory
true
已不推荐使用该参数,支持该参数只是为了让脚本能够向后兼容。您不再能够向 Active Directory 中添加发布信息。
false
将发布信息从 Active Directory 上删除。
replicate_ddl
1
复制在发布服务器上执行的数据定义语言 (DDL) 语句。
0
不复制 DDL 语句。
retention
一个 int 值,表示保存给定发布更改的时间长度,时间单位由 retention_period_unit 指定。如果在保持期内没有同步该订阅,并在分发服务器上使用清除操作删除了该订阅本应接收到的挂起更改,则该订阅将过期,必须重新初始化。允许的最大保持期为当前日期到 9999 年 12 月 31 日之间的天数。
注意合并发布的保持期具有 24 小时的宽限期,以适应处于不同时区中的订阅服务器。retention_period_unit
day
按天指定保持期。
week
按周指定保持期。
month
按月指定保持期。
year
按年指定保持期。
snapshot_in_defaultfolder
true
在默认快照文件夹中存储快照文件。
false
在 alt_snapshot_folder 指定的备用位置中存储快照文件。此组合指定将快照文件同时存储在默认位置和备用位置中。
snapshot_ready
true
用于发布的快照已准备就绪。
false
用于发布的快照尚未准备就绪。
status
active
发布处于活动状态。
inactive
发布处于非活动状态。
sync_mode
native 或
bcp native
将所有表的本机模式大容量复制程序输出用于初始快照。
character
或 bcp character
将所有表的字符模式大容量复制程序输出用于初始快照,所有非 SQL Server 订阅服务器必须执行此操作。
use_partition_groups
注意在使用 partition_groups 后,如果要恢复为使用 setupbelongs 并在 changemergearticle 中设置 use_partition_groups=false,则创建快照后可能不会正确反映此设置。快照生成的触发器符合分区组的要求。 这种情况的解决方法是:将 status 设置为 Inactive,修改 use_partition_groups,然后将 status 设置为 Active。true
发布使用预计算分区。
false
发布不使用预计算分区。
validate_subscriber_info
列出用于检索订阅服务器信息的函数。然后,验证要用于订阅服务器的动态筛选条件以验证是否对信息进行了一致的分区。
web_synchronization_url
用于 Web 同步的 Internet URL 的默认值。
NULL(默认值)
返回 property 所支持值的列表。
[ @force\_invalidate\_snapshot = ] force_invalidate_snapshot
确认此存储过程所执行的操作是否可能会使现有快照失效。force_invalidate_snapshot 的数据类型为 bit,默认值为 0。0 指定更改发布的操作不会使快照无效。如果该存储过程检测到更改确实需要新的快照,则会发生错误,并且不进行任何更改。
1 指定更改发布的操作可能会使快照无效。如果现有订阅需要新的快照,则授予将现有快照标记为过时快照并生成新快照的权限。
有关在更改时需要生成新快照的属性,请参阅“备注”部分。
[ @force\_reinit\_subscription = ] force_reinit_subscription
确认此存储过程所执行的操作是否需要重新初始化现有订阅。force_reinit_subscription 的数据类型为 bit,默认值为 0。0 指定更改发布的操作不需要重新初始化订阅。如果该存储过程检测到更改将需要重新初始化现有订阅,则会发生错误,并且不执行任何更改。
1 指定更改发布的操作会导致重新初始化现有订阅,并授予重新初始化订阅的权限。
有关在更改时需要重新初始化所有现有订阅的属性,请参阅“备注”部分。
返回代码值
0(成功)或 1(失败)
注释
sp_changemergepublication 用于合并复制。
若要更改下列属性,需要生成新的快照。必须为 force_invalidate_snapshot 参数指定值 1。
alt_snapshot_folder
compress_snapshot
dynamic_filters
ftp_address
ftp_login
ftp_password
ftp_port
ftp_subdirectory
post_snapshot_script
publication_compatibility_level(仅适用于 80SP3)
pre_snapshot_script
snapshot_in_defaultfolder
sync_mode
use_partition_groups
若要更改下列属性,需要重新初始化现有订阅。必须为 force_reinit_subscription 参数指定值 1。
dynamic_filters
validate_subscriber_info
若要使用 publish_to_active_directory 列出 Active Directory 中的发布对象,必须已在 Active Directory 中创建了 SQL Server 对象。
示例
DECLARE @publication AS sysname;
SET @publication = N'AdvWorksSalesOrdersMerge';
-- Disable DDL replication for the publication.
USE [AdventureWorks]
EXEC sp_changemergepublication
@publication = @publication,
@property = N'replicate_ddl',
@value = 0,
@force_invalidate_snapshot = 0,
@force_reinit_subscription = 0;
GO
权限
只有 sysadmin 固定服务器角色或 db_owner 固定服务器角色的成员能够执行 sp_changemergepublication。