sp_addpullsubscription (Transact-SQL)
将请求订阅添加到快照或事务发布中。 此存储过程在订阅服务器上要创建请求订阅的数据库中执行。
语法
sp_addpullsubscription [ @publisher= ] 'publisher'
[ , [ @publisher_db= ] 'publisher_db' ]
, [ @publication= ] 'publication'
[ , [ @independent_agent= ] 'independent_agent' ]
[ , [ @subscription_type= ] 'subscription_type' ]
[ , [ @description= ] 'description' ]
[ , [ @update_mode= ] 'update_mode' ]
[ , [ @immediate_sync = ] immediate_sync ]
参数
[ @publisher=] 'publisher'
发布服务器的名称。 publisher 的数据类型为 sysname,无默认值。[ @publisher_db=] 'publisher_db'
发布服务器数据库的名称。 publisher_db 的数据类型为 sysname,默认值为 NULL。 Oracle 发布服务器忽略 publisher_db。[ @publication=] 'publication'
发布的名称。 publication 的数据类型为 sysname,无默认值。[ @independent_agent=] 'independent_agent'
指定是否有用于该发布的独立分发代理。 independent_agent 的数据类型为 nvarchar(5),默认值为 TRUE。 如果为 true,则表示该发布有独立分发代理。 如果为 False,则每个发布服务器数据库/订阅服务器数据库对都有一个分发代理。 independent_agent 是发布的属性,并且在此处的值必须与发布服务器中的值相同。[ @subscription_type=] 'subscription_type'
订阅的类型。 subscription_type 的数据类型为 nvarchar(9),默认值为 anonymous。 您必须指定 subscription_type 的值为 pull,除非要创建订阅而不在发布服务器上注册此订阅。 在此情况下,您必须指定一个 anonymous 值。 如果在订阅配置期间无法建立到发布服务器的 SQL Server 连接,则必需此值。[ @description=] 'description'
发布的说明。 description 的数据类型为 nvarchar(100),默认值为 NULL。[ @update_mode=] 'update_mode'
更新的类型。 update_mode 的数据类型为 nvarchar(30),可以为以下值之一。值
说明
read only(默认值)
该订阅是只读的。 在订阅服务器上所做的任何更改不会发送回发布服务器。 应在订阅服务器不进行更新时使用。
sync tran
启用对即时更新订阅的支持。
queued tran
启用排队更新的订阅。 可以在订阅服务器上进行数据修改,将其存储在队列中,然后传播到发布服务器。
failover
将排队更新作为故障转移的情况下启用用于即时更新的订阅。 可以在订阅服务器上进行数据修改并立即传播到发布服务器。 如果发布服务器与订阅服务器未连接在一起,则可以将在订阅服务器上所做的数据修改存储在队列中,直到订阅服务器与发布服务器重新连接在一起。
queued failover
将订阅启用为排队更新订阅,并允许更改为立即更新模式。 在订阅服务器和发布服务器之间建立连接之前,可以在订阅服务器上修改数据,并将数据修改存储在队列中。 建立起持续连接后,即可将更新模式更改为立即更新。 Oracle 发布服务器不支持。
[ @immediate_sync =] immediate_sync
每次运行快照代理时是创建还是重新创建同步文件。 immediate_sync 的数据类型为 bit,默认值为 1,必须与 sp_addpublication 中的 immediate_sync 设置为相同的值。immediate_sync 是发布的属性,在此处的值必须与发布服务器上的值相同。
返回代码值
0(成功)或 1(失败)
注释
sp_addpullsubscription 用于快照复制和事务复制。
安全说明 |
---|
对于在队列中排队的更新订阅,请将 SQL Server 验证用于与订阅服务器的连接,并为每个订阅服务器连接指定一个不同的帐户。 创建支持排队更新的请求订阅时,复制始终将连接设置为使用 Windows 身份验证(对于请求订阅,复制无法访问使用 SQL Server 身份验证所需的订阅服务器中的元数据)。 在这种情况下,应执行 sp_changesubscription 以在配置订阅后将连接更改为使用 SQL Server 身份验证。 |
如果订阅服务器上没有 MSreplication_subscriptions (Transact-SQL) 表,则 sp_addpullsubscription 创建该表。 它还向 MSreplication_subscriptions (Transact-SQL) 表中添加一行。 对于请求订阅,应首先在发布服务器上调用 sp_addsubscription (Transact-SQL)。
示例
-- This script uses sqlcmd scripting variables. They are in the form
-- $(MyVariable). For information about how to use scripting variables
-- on the command line and in SQL Server Management Studio, see the
-- "Executing Replication Scripts" section in the topic
-- "Programming Replication Using System Stored Procedures".
-- Execute this batch at the Subscriber.
DECLARE @publication AS sysname;
DECLARE @publisher AS sysname;
DECLARE @publicationDB AS sysname;
SET @publication = N'AdvWorksProductTran';
SET @publisher = $(PubServer);
SET @publicationDB = N'AdventureWorks2012';
-- At the subscription database, create a pull subscription
-- to a transactional publication.
USE [AdventureWorks2012Replica]
EXEC sp_addpullsubscription
@publisher = @publisher,
@publication = @publication,
@publisher_db = @publicationDB;
-- Add an agent job to synchronize the pull subscription.
EXEC sp_addpullsubscription_agent
@publisher = @publisher,
@publisher_db = @publicationDB,
@publication = @publication,
@distributor = @publisher,
@job_login = $(Login),
@job_password = $(Password);
GO
权限
只有 sysadmin 固定服务器角色成员或 db_owner 固定数据库角色成员才能执行 sp_addpullsubscription。
请参阅
参考
sp_addpullsubscription_agent (Transact-SQL)
sp_change_subscription_properties (Transact-SQL)
sp_droppullsubscription (Transact-SQL)
sp_helppullsubscription (Transact-SQL)
sp_helpsubscription_properties (Transact-SQL)