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 旧分区中的数据保留在订阅服务器上,其中对发布服务器上的此数据所做的更改不会复制到此订阅服务器。 相反,在订阅服务器上进行的更改将复制到发布服务器。 此属性用于保留旧分区中的订阅数据,以便满足用户访问历史数据的需要。
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 指针。 合并代理在订阅服务器上应用快照时,在复制的任何对象脚本之前运行预快照脚本。 若要更改此属性,则需要新的快照。
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) 语句。
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

注意: 使用分区组后,如果要还原为使用 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_snapshot

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

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

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

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

[ @force_reinit_subscription = ] force_reinit_subscription

确认此存储过程所执行的操作是否需要重新初始化现有订阅。 @force_reinit_subscription为,默认值为 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_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