sp_changemergepublication (Transact-SQL)

适用于:SQL Server

更改合并发布的属性。 此存储过程在发布服务器上对发布数据库执行。

Transact-SQL 语法约定

语法

sp_changemergepublication
    [ @publication = ] N'publication'
    [ , [ @property = ] N'property' ]
    [ , [ @value = ] N'value' ]
    [ , [ @force_invalidate_snapshot = ] force_invalidate_snapshot ]
    [ , [ @force_reinit_subscription = ] force_reinit_subscription ]
[ ; ]

参数

[ @publication = ] N'publication'

发布的名称。 @publicationsysname,无默认值。

[ @property = ] N'property'

给定发布的要更改的属性。 @propertysysname,可以是下表中列出的值之一。

[ @value = ] N'value'

指定属性的新值。 @valuenvarchar(255),默认值为 NULL.

,可以是下表中列出的值之一。

下表描述了可更改的发布的属性,并描述了对这些属性的值的限制。

属性 说明
allow_anonymous true 允许匿名订阅。
false 不允许匿名订阅。
allow_partition_realignment true 将删除指令发送到订阅服务器,删除不再属于订阅服务器分区的数据以反映分区更改结果。 这是默认行为。
false 旧分区中的数据保留在订阅服务器上,其中对发布服务器上的此数据所做的更改不会副本 (replica)此订阅服务器。 相反,在订阅服务器上进行的更改将复制到发布服务器。 此属性用于保留旧分区中的订阅数据,以便满足用户访问历史数据的需要。
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 订阅服务器不支持。
both 在发布服务器和订阅服务器上都存储冲突记录。
conflict_retention 一个 int ,指定保留期(以天为单位),其中保留冲突。 0设置为conflict_retention意味着不需要冲突清理。
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,则没有限制。 如果计划同时运行多个合并进程,则会将多余的作业放入队列中,直到当前lmerge 进程完成。
max_concurrent_dynamic_snapshots 一个 int,表示快照会话的最大数目,用于生成筛选的数据快照,该数据可以同时针对使用参数化行筛选器的合并发布运行。 如果 0存在限制,则没有限制。 如果计划同时执行的快照进程数超出这一数值,则多出的作业将被放到队列中等待,直到当前运行的合并进程完成。
post_snapshot_script 指定指向文件位置的 .sql 指针。 在初始同步过程中应用了所有其他复制的对象脚本和数据之后,分发代理或合并代理才运行快照后脚本。 若要更改此属性,则需要新的快照。
pre_snapshot_script 指定指向文件位置的 .sql 指针。 在订阅服务器上应用快照时,合并代理在任一副本 (replica)对象脚本之前运行预快照脚本。 若要更改此属性,则需要新的快照。
publication_compatibility_level 100RTM SQL Server 2008 (10.0.x)
90RTM SQL Server 2005 (9.x)
publish_to_activedirectory true 此参数已弃用,并维护脚本的向后兼容性。 您不再能够向 Active Directory 中添加发布信息。
false 将发布信息从 Active Directory 上删除。
replicate_ddl 1 发布服务器上执行的数据定义语言(DDL)语句副本 (replica)。
0 未副本 (replica) 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

注意:使用分区组后,如果要还原使用setupbelongs并设置use_partition_groups=falsechangemergearticle则执行快照后可能无法正确反映。 快照生成的触发器符合分区组。

此方案的解决方法是将状态设置为“非活动”,修改状态 use_partition_groups,然后将状态设置为“活动”。
true 发布使用预计算分区。
false 发布不使用预计算分区。
validate_subscriber_info 列出用于检索订阅服务器信息的函数。 然后,验证用于订阅服务器的动态筛选条件,以验证信息是否一致地分区。
web_synchronization_url 用于 Web 同步的 Internet URL 的默认值。
NULL(默认值) 返回@property支持的值列表。

[ @force_invalidate_snapshot = ] force_invalidate_快照

确认此存储过程执行的操作可能会使现有快照失效。 @force_invalidate_快照为,默认值为 0.

  • 0指定更改发布不会使快照失效。 如果该存储过程检测到更改确实需要新的快照,则会发生错误,并且不进行任何更改。

  • 1指定更改发布可能会使快照无效。 如果存在需要新快照的现有订阅,则授予将现有快照标记为已过时的权限,以及生成新的快照的权限。

有关更改的属性,请参阅“备注”部分,这些属性需要生成新的快照。

[ @force_reinit_subscription = ] force_reinit_subscription

确认此存储过程所执行的操作是否需要重新初始化现有订阅。 @force_reinit_subscription为,默认值为 0.

  • 0 指定更改发布不需要重新初始化订阅。 如果存储过程检测到更改需要重新初始化现有订阅,则会发生错误,并且不会进行任何更改。

  • 1 表示对发布重新初始化现有订阅的更改,并授予订阅重新初始化的权限。

有关更改的属性,请参阅“备注”部分,这些属性要求重新初始化所有现有订阅。

返回代码值

0(成功)或 1(失败)。

备注

sp_changemergepublication用于合并副本 (replica)。

更改以下属性需要生成新的快照。 必须为 @force_invalidate_快照 参数指定值。1

  • alt_snapshot_folder
  • compress_snapshot
  • dynamic_filters
  • ftp_address
  • ftp_login
  • ftp_password
  • ftp_port
  • ftp_subdirectory
  • post_snapshot_script
  • publication_compatibility_level80SP3(仅)
  • 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 [AdventureWorks2022]
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