Transact-SQL 参考

sp_changepublication

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

语法

sp_changepublication [ [ @publication = ] 'publication' ]
    [ , [ @property = ] 'property' ]
    [ , [ @value = ] 'value' ]
    [ , [ @force_invalidate_snapshot = ] force_invalidate_snapshot ]
    [ , [ @force_reinit_subscription = ] force_reinit_subscription ]

参数

[@publication =] 'publication'

是发布名。publication 的数据类型为 sysname,默认值为 NULL。

[@property =] 'property'

是要更改的发布属性。property 的数据类型为 nvarchar(20),可以是下列值之一。

描述
taskid 使用 sp_addtask 创建的唯一调度任务 ID。仅为保持向后兼容性。
sync_method 同步方法。可以是:

native = 生成所有表的本机模式大容量复制输出
character = 生成所有表的字符模式大容量复制输出
concurrent = 在快照期间生成所有表的本机模式大容量复制程序输出但不锁定表
concurrent_c = 在快照期间生成所有表的字符模式大容量复制程序输出但不锁定表。
注意值 concurrentconcurrent_c 可用于事务复制和合并复制,但不可用于快照复制。

repl_freq 复制频率。可以是 continuous(提供所有基于日志的事务输出)或 snapshot(只生成已调度同步事件)。
description 用于描述发布的可选项。
status 发布状态。可以是 inactive(第一次创建订阅时,发布数据不能由订阅服务器使用)或 active(发布数据可由订阅服务器立即使用)。
independent_agent 指定是否有用于该发布的单独的分发代理程序。如果是 true,则表示有用于该发布的独立分发代理程序。如果是 false,则发布使用共享分发代理程序,且每个发布服务器数据库/订阅服务器数据库对都有共享代理程序。
immediate_sync 指定是否每次快照代理程序运行时都创建发布的同步文件。如果是 true,则表示每次快照代理程序运行时都创建或重新创建同步文件。如果在完成订阅之前已完成一次快照代理程序,则订阅服务器能够在接收订阅之后立即接收同步文件。新订阅获得最后一次执行快照代理程序所生成的最新同步文件。要想使 immediate_synctrueindependent_agent 必须为 true。如果是 false,则表示只有存在新订阅时才创建同步文件。订阅服务器不能在接收订阅之后接收同步文件,直到启动并完成快照代理程序。
enabled_for_internet 指定是否为 Internet 启用发布。如果是 true,则表示该发布的同步文件放在 \Repldata\Ftp 目录内。
allow_push 指定是否可以为给定发布创建强制订阅。如果是 true,则表示允许在该发布上使用强制订阅。
allow_pull 指定是否可以为给定发布创建请求订阅。如果是 true,则表示允许在该发布上使用请求订阅。
allow_anonymous 指定是否可以为给定发布创建匿名订阅。如果是 true,则 immediate_sync 也必须设置为 true。如果是 true,则表示允许在该发布上使用匿名订阅。
retention 订阅活动的保持期(以小时为单位)。如果订阅在保持期内不活动,则将其删除。
snapshot_in_
defaultfolder
指定是否将快照文件存储在默认文件夹中。snapshot_in_defaultfolder 的数据类型为 nvarchar(5)。如果是 true,则可以在默认文件夹中找到快照文件。如果是 false,则表示快照文件已存储在 alt_snapshot_folder 所指定的备用位置中。备用位置可以在另一台服务器、一个网络驱动器或可移动媒体(如光盘或可移动磁盘)上。也可以将快照文件保存到文件传输协议 (FTP) 站点以供订户以后检索。注意该参数可以为 true,并且在 @alt_snapshot_folder 参数中仍有位置。该组合指定将快照文件同时存储在默认位置和备用位置。
alt_snapshot_folder 指定快照的备用文件夹位置。alternate_snapshot_folder 的数据类型为 nvarchar(255)
pre_snapshot_script 指定指向 .sql 文件位置的指针。pre_snapshot_script 的数据类型为 nvarchar(255)。在订阅服务器上应用快照时,分发代理程序将在运行任何复制的对象脚本之前运行快照前脚本。
post_snapshot_script 指定指向 .sql 文件位置的指针。post_snapshot_script 的数据类型为 nvarchar(255)。分发代理程序将在初始同步过程中已应用所有其它复制的对象脚本和数据之后才运行快照后脚本。
compress_snapshot 指定将写入 @alt_snapshot_folder 位置的快照压缩成 Microsoft® CAB 格式。compress_snapshot 的数据类型为 nvarchar(5),默认设置为 FALSE。false 指定不压缩快照;而 true 指定将压缩快照。不能压缩默认文件夹中的快照。
ftp_address 是分发服务器 FTP 服务的网络地址。ftp_address 的数据类型为 sysname。指定供订阅服务器的分发代理程序或合并代理程序获取的发布快照文件的位置。因为要为每个发布存储该属性,所以每个发布可以有不同的 ftp_address。发布必须支持通过 FTP 传播快照。有关更多信息,请参见配置发布以允许订阅服务器使用 FTP 检索快照
ftp_port 是分发服务器的 FTP 服务的端口号。ftp_port 的数据类型为 int。默认设置为 21。指定供订阅服务器的分发代理程序或合并代理程序获取的发布快照文件的位置。因为要为每个发布存储该属性,所以每个发布可以有自己的 ftp_port
ftp_subdirectory 如果发布支持通过 FTP 传播快照,指定可供订阅服务器的分发代理程序或合并代理程序获取的快照文件的位置。ftp_subdirectory 的数据类型为 nvarchar(255)。因为要为每个发布存储该属性,所以每个发布可以有自己的 ftp_subdirctory,或选择没有子目录,如 NULL 值表示的那样。
ftp_login 是用于连接到 FTP 服务的用户名。ftp_login 的数据类型为 sysname。允许使用值 ANONYMOUS。
ftp_password 是用于连接到 FTP 服务的用户密码。ftp_password 的数据类型为 sysname
conflict_policy 指定在使用排队更新订阅服务器选项时应遵从的冲突解决策略。conflict_policy 的数据类型为 nvarchar(100),可以是下列值之一:

pub wins = 发布服务器在冲突中取胜。
sub reinit = 重新初始化订阅。
sub wins = 订阅服务器在冲突中取胜。
NULL = 如果是 NULL 且该发布是快照发布,则默认策略变成 sub reinit。如果是 NULL 且发布不是快照发布,则默认策略变成 pub wins

只有在没有活动订阅时才能更改该属性。

centralized_conflicts 指定是否在发布服务器上存储冲突记录。centralized_conflicts 的数据类型为 nvarchar(5)。如果是 true,则表示冲突记录存储在发布服务器上。如果是 false,则在引起冲突的发布服务器和订阅服务器上都存储冲突记录。

只有在没有活动订阅时才能更改该属性。

conflict_retention 指定冲突保持期(以天为单位)。conflict_retention 的数据类型为 int。默认保持期一般为 14 天。
queue_type 指定使用的队列类型。queue_type 的数据类型为 nvarchar(10),可以是下列值之一:

msmq = 使用 Microsoft 消息队列存储事务。
sql = 使用 SQL Server 存储事务。
NULL = 默认设置为 sql,指定使用 SQL Server 存储事务。

只有在没有活动订阅时才能更改该属性。

publish_to_
ActiveDirectory
指定是否将发布信息发布到 Microsoft Active Directory™。add_to_active_directory 的数据类型为 nvarchar(10)。只有在运行 Microsoft Windows® 2000 操作系统的服务器上才能使用该功能。有效值为:

true = 发布发布信息。
false = 不发布发布信息。

NULL(默认值)

[@value =] 'value'

是新属性值。value 的数据类型为 nvarchar(255),默认设置为 NULL。

[@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_changepublication 用于快照复制和事务复制。

若要使用 @publish_to_Active_Directory 参数列出 Active Directory 中的发布对象,必须已经在 Active Directory 中创建了 SQL Server 对象。有关更多信息,请参见 Active Directory 服务

权限

只有 sysadmin 固定服务器角色成员或 db_owner 固定数据库角色成员才能执行 sp_changepublication

请参见

sp_addarticle

sp_addpublication

sp_articlecolumn

sp_changearticle

sp_droparticle

sp_droppublication

sp_enumfullsubscribers

sp_helparticle

sp_helparticlecolumns

sp_helppublication

系统存储过程