Transact-SQL 参考

sp_addmergepublication

创建新合并发布。此存储过程在发布服务器的任何数据库上执行。

语法

sp_addmergepublication [ @publication = ] 'publication'
    [ , [ @description = ] 'description'
    [ , [ @retention = ] retention ]
    [ , [ @sync_mode = ] 'sync_mode' ]
    
[ , [ @allow_push = ] 'allow_push' ]
    
[ , [ @allow_pull = ] 'allow_pull' ]
    [ , [ @allow_anonymous = ] 'allow_anonymous' ]
    [ , [ @enabled_for_internet = ] 'enabled_for_internet' ]
    [ , [ @centralized_conflicts = ] 'centralized_conflicts' ]
    [ , [ @dynamic_filters = ] 'dynamic_filters' ]
    [ , [ @snapshot_in_defaultfolder = ] 'snapshot_in_default_folder' ]
    [ , [ @alt_snapshot_folder = ] 'alternate_snapshot_folder' ]
    [ , [ @pre_snapshot_script = ] 'pre_snapshot_script' ]
    [ , [ @post_snapshot_script = ] 'post_snapshot_script' ]
    [ , [ @compress_snapshot = ] 'compress_snapshot' ]
    [ , [ @ftp_address = ] 'ftp_address' ]
    [ , [ @ftp_port= ] ftp_port ]
    [ , [ @ftp_subdirectory = ] 'ftp_subdirectory' ]
    [ , [ @ftp_login = ] 'ftp_login' ]
    [ , [ @ftp_password = ] 'ftp_password' ]
    [ , [ @conflict_retention = ] conflict_retention ]
    [ , [ @keep_partition_changes = ] 'keep_partition_changes' ]
    [ , [ @allow_subscription_copy = ] 'allow_subscription_copy' ]
    [ , [ @allow_synctoalternate = ] 'allow_synctoalternate' ]
    [ , [ @validate_subscriber_info = ] 'validate_subscriber_info' ]
    [ , [ @add_to_active_directory = ] 'add_to_active_directory' ]
    [ , [ @max_concurrent_merge = ] maximum_concurrent_merge ]
    [ , [ @max_concurrent_dynamic_snapshots =] max_concurrent_dynamic_snapshots ]
参数

[@publication = ] 'publication'

是要创建的合并发布名。publication 的数据类型为 sysname,没有默认设置,而且一定不能是关键字 ALL。发布名在数据库内必须唯一。

[@description = ] 'description'

是对发布的描述。description 的数据类型为 nvarchar(255),默认设置为 NULL。

[@retention = ] retention

是保存给定 publication 的更改的天数。retention 的数据类型为 int,默认设置为 14 天。如果订阅在保持期内未合并,则将过期并被删除。

[@sync_mode = ] 'sync_mode'

是发布的订阅服务器的初始同步模式。sync_mode 的数据类型为 nvarchar(10),默认设置为 native。如果是 native,则表示生成所有表的本机模式大容量复制程序输出。如果是 character,则表示生成所有表的字符模式大容量复制程序输出。非 SQL Server 订阅服务器要求使用 character

[@allow_push = ] 'allow_push'

指定是否可以为给定发布创建强制订阅。allow_push 的数据类型为 nvarchar(5),默认设置为 TRUE,它允许对发布进行强制订阅。

[@allow_pull = ] 'allow_pull'

指定是否可以为给定发布创建请求订阅。allow_pull 的数据类型为 nvarchar(5),默认设置为 TRUE,它允许对发布创建请求订阅。

[@allow_anonymous = ] 'allow_anonymous'

指定是否可以为给定发布创建匿名订阅。allow_anonymous 的数据类型为 nvarchar(5),默认设置为 FALSE,它不允许对发布创建匿名订阅。

[@enabled_for_internet = ] 'enabled_for_internet'

指定是否为 Internet 启用发布,并确定 FTP 是否可用于向订阅服务器传输快照。enabled_for_internet 的数据类型为 nvarchar(5),默认设置为 FALSE。如果为 true,则将发布的同步文件放入 C:\Program Files\Microsoft SQL Server\MSSQL\Repldata\Ftp 目录中。用户必须创建 Ftp 目录。如果是 false,则不为 Internet 访问启用发布。

[@centralized_conflicts = ] 'centralized_conflicts'

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

[@dynamic_filters = ] 'dynamic_filters'

启用合并发布以允许动态筛选。dynamic_filter 的数据类型为 nvarchar(5),默认设置为 FALSE。

[@snapshot_in_defaultfolder = ] 'snapshot_in_default_folder'

指定是否将快照文件存储在默认文件夹中。snapshot_in_default_folder 的数据类型为 nvarchar(5),默认设置为 TRUE。如果是 true,则可以在默认文件夹中找到快照文件。如果是 false,则表示快照文件将存储在 alternate_snapshot_folder 所指定的备用位置中。备用位置可以在另一台服务器、一个网络驱动器或可移动媒体(如 CD-ROM 或可移动磁盘)上。也可以将快照文件保存到文件传输协议 (FTP) 站点以供订户以后检索。注意该参数可以为 true,并且在 @alt_snapshot_folder 参数中仍有位置。该组合指定将快照文件同时存储在默认位置和备用位置。

[@alt_snapshot_folder = ] 'alternate_snapshot_folder'

指定快照的备用文件夹的位置。alternate_snapshot_folder 的数据类型为 nvarchar(255),默认设置为 NULL。

[@pre_snapshot_script = ] 'pre_snapshot_script'

指定指向 .sql 文件位置的指针。pre_snapshot_script 的数据类型为 nvarchar(255),默认设置为 NULL。当在订阅服务器上应用快照时,合并代理程序将在运行任何复制的对象脚本之前运行快照前脚本。

[@post_snapshot_script = ] 'post_snapshot_script'

指定指向 .sql 文件位置的指针。post_snapshot_script 的数据类型为 nvarchar(255),默认设置为 NULL。分发代理程序或合并代理程序将在所有其它复制的对象脚本和数据已在初始同步过程中应用之后才运行快照后脚本。

[@compress_snapshot = ] 'compress_snapshot'

指定将写入 @alt_snapshot_folder 位置快照压缩成 Microsoft® CAB 格式。compress_snapshot 的数据类型为 nvarchar(5),默认设置为 FALSE。false 指定不压缩快照;而 true 指定将压缩快照。不能压缩默认文件夹中的快照。

[@ftp_address = ] 'ftp_address'

是分发服务器的 FTP 服务网络地址。ftp_address 的数据类型为 sysname,默认设置为 NULL。指定供订阅服务器的分发代理程序或合并代理程序获取的发布快照文件的位置。因为存储每个发布的该属性,所以每个发布可以有不同的 ftp_address。发布必须支持通过 FTP 传播快照。有关更多信息,请参见配置发布以允许订阅服务器使用 FTP 检索快照

[@ftp_port = ] ftp_port

是分发服务器的 FTP 服务的端口号。ftp_port 的数据类型为 int,默认设置为 21。指定供订阅服务器的分发代理程序或合并代理程序获取的发布快照文件的位置。因为存储每个发布的该属性,所以每个发布可以有自己的 ftp_port

[@ftp_subdirectory = ] 'ftp_subdirectory'

如果发布支持通过 FTP 传播快照,指定可供订阅服务器的合并代理程序获取的快照文件的位置。ftp_subdirectory 的数据类型为 nvarchar(255),默认设置为 NULL。因为存储每个发布的该属性,所以每个发布可以有自己的 ftp_subdirctory,或选择没有子目录,如 NULL 值表示的那样。

[@ftp_login = ] 'ftp_login'

是用于连接到 FTP 服务的用户名。ftp_login 的数据类型为 sysname,默认设置为"anonymous"。

[@ftp_password = ] 'ftp_password'

是用于连接到 FTP 服务的用户密码。ftp_password 的数据类型为 sysname,默认设置为 NULL。

[@conflict_retention = ] conflict_retention

指定保留冲突的保持期(以天为单位)。conflict_retention 的数据类型为 int,从冲突文件中清除冲突行之前的默认设置是 14 天。

[@keep_partition_changes = ] 'keep_partition_changes'

指定同步优化是否应发生。keep_partition_changes 的数据类型为 nvarchar(5),默认设置为 FALSE。false 表示不进行同步优化,且当分区中的数据更改时,验证发送给所有订阅服务器的分区。true 表示进行同步优化,且只有在更改的分区中有行的订阅服务器受影响。有关更多信息,请参见优化同步

[@allow_subscription_copy = ] 'allow_subscription_copy'

启用或禁用复制订阅此发布的订阅数据库的能力。allow_subscription_copy 的数据类型为 nvarchar(5),默认设置为 FALSE。

[@allow_synctoalternate = ] 'allow_synctoalternate'

启用可选同步伙伴以与此发布服务器同步。allow_synctoalternate 的数据类型为 nvarchar(5),默认设置为 FALSE。

[@validate_subscriber_info = ] 'validate_subscriber_info'

列出正用于检索订阅服务器信息的函数,并验证动态筛选条件,而该条件正由订阅服务器用于验证分区信息是否与每个合并都一致。validate_subscriber_info 的数据类型为 nvarchar(500),默认设置为 NULL。例如,如果 SUSER_SNAME() 用于动态筛选,则该参数应该是 @validate_subscriber_info=N'SUSER_SNAME()'。有关更多信息,请参见验证订阅服务器信息

[@add_to_active_directory = ] 'add_to_active_directory'

指定是否将发布信息发布到 Microsoft Active Directory™。add_to_active_directory 的数据类型为 nvarchar(5),默认设置为 FALSE。只有运行在 Windows® 2000 操作系统上的服务器才能使用该功能。true 值将发布信息添加到 Microsoft Active Directory。

[@max_concurrent_merge = ] maximum_concurrent_merge

最大并发合并进程数。该属性的 0 值表示对在任何给定时间运行的并发合并进程数没有限制。该属性对可以同时在合并发布上运行的并发合并进程数设置限制。如果同时调度的快照进程数比该值允许运行的快照进程数要多,则多出的作业被放入队列中,一直等到当前运行的合并进程结束。

[@max_concurrent_dynamic_snapshots =] max_concurrent_dynamic_snapshots

在合并发布上可以运行的最大并发动态快照会话数。如果是 0,表示对在任意给定时间运行的并发动态快照会话数没有限制。该属性对可以同时在合并发布上运行的并发快照进程数设置限制。如果同时调度的快照进程数比该值允许运行的快照进程数要多,则多出的作业被放入队列中,一直等到当前运行的合并进程结束。

返回代码值

0(成功)或 1(失败)

注释

sp_addmergepublication 用于合并复制。

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

权限

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

请参见

配置发布以允许订阅服务器使用 FTP 检索快照

在应用快照之前和之后执行脚本

sp_changemergepublication

sp_dropmergepublication

sp_helpmergepublication

系统存储过程