创建快照发布或事务发布此存储过程在发布服务器的发布数据库上执行。
sp_addpublication [ @publication = ] 'publication'
[ , [ @taskid = ] tasked ]
[ , [ @restricted = ] 'restricted' ]
[ , [ @sync_method = ] 'sync_method' ]
[ , [ @repl_freq = ] 'repl_freq' ]
[ , [ @description = ] 'description' ]
[ , [ @status = ] 'status' ]
[ , [ @independent_agent = ] 'independent_agent' ]
[ , [ @immediate_sync = ] 'immediate_sync' ]
[ , [ @enabled_for_internet = ] 'enabled_for_internet' ]
[ , [ @allow_push = ] 'allow_push'
[ , [ @allow_pull = ] 'allow_pull' ]
[ , [ @allow_anonymous = ] 'allow_anonymous' ]
[ , [ @allow_sync_tran = ] 'allow_sync_tran' ]
[ , [ @autogen_sync_procs = ] 'autogen_sync_procs' ]
[ , [ @retention = ] retention ]
[ , [ @allow_queued_tran= ] 'allow_queued_updating' ]
[ , [ @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' ]
[ , [ @allow_dts = ] 'allow_transformable_subscriptions' ]
[ , [ @allow_subscription_copy = ] 'allow_subscription_copy' ]
[ , [ @conflict_policy = ] 'conflict_policy' ]
[ , [ @centralized_conflicts = ] 'centralized_conflicts' ]
[ , [ @conflict_retention = ] conflict_retention ]
[ , [ @queue_type = ] 'queue_type' ]
[ , [ @add_to_active_directory = ] 'add_to_active_directory' ]
[ , [ @logreader_job_name = ] 'logreader_agent_name' ]
[ , [ @qreader_job_name = ] 'queue_reader_agent_name' ]
[@publication = ] 'publication'
是要创建的发布名。publication 的数据类型为 sysname,没有默认设置。该名称在数据库内必须唯一。
[@taskid = ] taskid
只支持向后兼容性;使用 sp_addpublication_snapshot。
[@restricted = ] 'restricted'
只支持向后兼容性;使用 default_access。
[@sync_method = ] 'sync_method'
是同步模式。sync_method 的数据类型为 nvarchar(13),可以是下列值之一。
值 | 描述 |
---|---|
native(默认值) | 生成所有表的本机模式大容量复制程序输出。 |
character | 生成所有表的字符模式大容量复制程序输出。 |
concurrent | 生成所有表的本机模式大容量复制程序输出,但在快照过程中并不锁定表。 |
concurrent_c | 生成所有表的字符模式大容量复制程序输出,但在快照过程中并不锁定表。 |
说明 值 concurrent 和 concurrent_c 可用于事务复制和合并复制,但不可用于快照复制。
[@repl_freq = ] 'repl_freq'
是复制频率的类型。replication_frequency 的数据类型为 nvarchar(10),默认设置为 continuous。如果是 continuous,则表示发布服务器提供所有基于日志的事务输出。如果是 Snapshot,则表示发布服务器只生成已调度同步事件。
[@description = ] 'description'
是对发布的可选描述。description 的数据类型为 nvarchar(255),默认设置为 NULL。
[@status = ] 'status'
指定发布数据是否可用。status 的数据类型为 nvarchar(8),可以是下列值之一。
值 | 描述 |
---|---|
active | 发布数据可立即用于订阅服务器。 |
inactive(默认值) | 首次创建发布时,发布数据不能由订阅服务器使用(订阅服务器可以订阅,但这些订阅不被处理)。 |
[@independent_agent = ] 'independent_agent'
指定是否有用于发布的单独的分发代理程序。independent_agent 的数据类型为 nvarchar(5),默认设置为 FALSE。如果是 true,则表示有用于该发布的独立分发代理程序。如果是 false,则表示该发布使用共享的分发代理程序,每对发布服务器数据库/订阅服务器数据库都有一个共享的代理程序。
[@immediate_sync = ] 'immediate_synchronization'
指定是否每次快照代理程序运行时都创建发布的同步文件。immediate_synchronization 的数据类型为 nvarchar(5),默认设置为 FALSE。如果是 true,则表示每次快照代理程序运行时都创建或重新创建同步文件。如果在创建订阅之前已完成快照代理程序,则订阅服务器能够立即获得同步文件。新订阅获得最后一次执行快照代理程序所生成的最新同步文件。要想使 immediate_synchronization 为 true,independent_agent 必须为 true。如果是 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 目录。
[@allow_push = ] 'allow_push'
指定是否可以为给定发布创建强制订阅。allow_push 的数据类型为 nvarchar(5),默认设置为 TRUE,它允许对发布进行强制订阅。
[@allow_pull = ] 'allow_pull'
指定是否可以为给定发布创建请求订阅。allow_pull 的数据类型为 nvarchar(5),默认设置为 FALSE。如果是 false,则表示不允许在该发布上使用请求订阅。
[@allow_anonymous = ] 'allow_anonymous'
指定是否可以为给定发布创建匿名订阅。allow_anonymous 的数据类型为 nvarchar(5),默认设置为 FALSE。如果是 true,则 immediate_synchronization 也必须设置为 true。如果是 false,则表示不允许在该发布上使用匿名订阅。
[@allow_sync_tran = ] 'allow_sync_tran'
指定对发布是否允许即时更新订阅。allow_sync_tran 的数据类型为 nvarchar(5),默认设置为 FALSE。
[@autogen_sync_procs = ] 'autogen_sync_procs'
指定是否在发布服务器上生成即时更新订阅的同步存储过程。autogen_sync_procs 的数据类型为 nvarchar(5),默认设置为 TRUE。
[@retention = ] retention]
是订阅活动的保持期(以小时为单位)。retention 的数据类型为 int,默认设置为 336 小时。如果订阅在保持期内不活动,则该订阅过期并被删除。该值可大于发布服务器所使用的分发数据库的最大保持期。如果为 0,则发布所知道的订阅将永远不会过期,且不会被过期订阅清除代理程序删除。有关更多信息,请参见订阅停用和过期。
[@allow_queued_tran = ] 'allow_queued_updating'
在订阅服务器上启用或禁用更改的队列,除非可以在发布服务器上应用它们。allow_queued_updating 的数据类型为 nvarchar(5),默认设置为 FALSE。如果是 false,则不排队订阅服务器上的更改。
[@snapshot_in_defaultfolder = ] 'snapshot_in_default_folder'
指定是否将快照文件存储在默认文件夹中。snapshot_in_default_folder 的数据类型为 nvarchar(5),默认设置为 TRUE。如果是 true,则可以在默认文件夹中找到快照文件。如果是 false,则表示快照文件已存储在 alternate_snapshot_folder 所指定的备用位置中。备用位置可以在另一台服务器、一个网络驱动器或可移动媒体(如光盘或可移动磁盘)上。也可以将快照文件保存到文件传输协议 (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。
[@allow_dts = ] 'allow_transformable_subscriptions'
指定发布允许数据转换。创建订阅时可以指定 DTS 包。allow_transformable_subscriptions 的数据类型为 nvarchar(5),默认设置为 FALSE,它不允许 DTS 转换。
[@allow_subscription_copy = ] 'allow_subscription_copy'
启用或禁用复制订阅此发布的订阅数据库的能力。allow_subscription_copy 的数据类型为 nvarchar(5),默认设置为 FALSE。
[@conflict_policy = ] 'conflict_policy'
指定当使用排队更新订阅服务器选项时所遵从的冲突解决策略。conflict_policy 的数据类型为 nvarchar(100),默认设置为 NULL,可以是下列值之一。
值 | 描述 |
---|---|
pub wins | 发布服务器在冲突中获胜。 |
sub reinit | 重新初始化订阅。 |
sub wins | 订阅服务器在冲突中获胜。 |
NULL(默认值) | 如果是 NULL 且该发布是快照发布,则默认策略变成 sub reinit。如果是 NULL 且发布不是快照发布,则默认策略变成 pub wins。 |
[@centralized_conflicts = ] 'centralized_conflicts'
指定冲突记录是否存储在发布服务器上。centralized_conflicts 的数据类型为 nvarchar(5),默认设置为 TRUE。如果是 true,则表示冲突记录存储在发布服务器上。如果是 false,则在引起冲突的发布服务器和订阅服务器上都存储冲突记录。
[@conflict_retention = ] conflict_retention
指定冲突保持期(以天为单位)。conflict_retention 的数据类型为 int,默认设置为 14。
[@queue_type = ] 'queue_type'
指定使用的队列类型。queue_type 的数据类型为 nvarchar(10),默认设置为 NULL,可以是下列值之一。
值 | 描述 |
---|---|
msmq | 使用 Microsoft® 消息队列存储事务。 |
sql | 使用 SQL Server 存储事务。 |
NULL(默认值) | 默认设置为 sql,指定使用 SQL Server 存储事务。 |
[@add_to_active_directory = ] 'add_to_active_directory'
指定是否将发布信息发布到 Microsoft Active Directory™。add_to_active_directory 的数据类型为 nvarchar(10),默认设置为 FALSE。只有运行 Windows® 2000 操作系统的服务器才能使用该功能。
[@logreader_job_name = ] 'logreader_agent_name'
仅限内部使用。
[@qreader_job_name = ] 'queue_reader_agent_name'
仅限内部使用。
0(成功)或 1(失败)
sp_addpublication 用于快照复制和事务复制。
若要使用 @add_to_active_directory 参数列出 Active Directory 的发布对象,必须已经在 Active Directory 中创建了 SQL Server 对象。有关更多信息,请参见 Active Directory 服务。
只有 sysadmin 固定服务器角色成员或 db_owner 固定数据库角色成员才能执行 sp_addpublication。