更改发布的属性。此存储过程在发布服务器的发布数据库上执行。
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 = 生成所有表的本机模式大容量复制输出 |
repl_freq | 复制频率。可以是 continuous(提供所有基于日志的事务输出)或 snapshot(只生成已调度同步事件)。 |
description | 用于描述发布的可选项。 |
status | 发布状态。可以是 inactive(第一次创建订阅时,发布数据不能由订阅服务器使用)或 active(发布数据可由订阅服务器立即使用)。 |
independent_agent | 指定是否有用于该发布的单独的分发代理程序。如果是 true,则表示有用于该发布的独立分发代理程序。如果是 false,则发布使用共享分发代理程序,且每个发布服务器数据库/订阅服务器数据库对都有共享代理程序。 |
immediate_sync | 指定是否每次快照代理程序运行时都创建发布的同步文件。如果是 true,则表示每次快照代理程序运行时都创建或重新创建同步文件。如果在完成订阅之前已完成一次快照代理程序,则订阅服务器能够在接收订阅之后立即接收同步文件。新订阅获得最后一次执行快照代理程序所生成的最新同步文件。要想使 immediate_sync 为 true,independent_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 = 发布服务器在冲突中取胜。 只有在没有活动订阅时才能更改该属性。 |
centralized_conflicts | 指定是否在发布服务器上存储冲突记录。centralized_conflicts 的数据类型为 nvarchar(5)。如果是 true,则表示冲突记录存储在发布服务器上。如果是 false,则在引起冲突的发布服务器和订阅服务器上都存储冲突记录。
只有在没有活动订阅时才能更改该属性。 |
conflict_retention | 指定冲突保持期(以天为单位)。conflict_retention 的数据类型为 int。默认保持期一般为 14 天。 |
queue_type | 指定使用的队列类型。queue_type 的数据类型为 nvarchar(10),可以是下列值之一:
msmq = 使用 Microsoft 消息队列存储事务。 只有在没有活动订阅时才能更改该属性。 |
publish_to_ ActiveDirectory |
指定是否将发布信息发布到 Microsoft Active Directory™。add_to_active_directory 的数据类型为 nvarchar(10)。只有在运行 Microsoft Windows® 2000 操作系统的服务器上才能使用该功能。有效值为:
true = 发布发布信息。 |
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。