sp_addpushsubscription_agent (Transact-SQL)
更新日期: 2006 年 12 月 12 日
添加新的预定代理作业,以使推送订阅与事务发布同步。此存储过程在发布服务器上对发布数据库执行。
安全说明: |
---|
使用远程分发服务器配置发布服务器时,为所有参数(包括 job_login 和 job_password)提供的值都将作为纯文本发送到分发服务器。在执行此存储过程之前,应当对发布服务器与其远程分发服务器之间的连接进行加密。有关详细信息,请参阅加密与 SQL Server 的连接。 |
语法
sp_addpushsubscription_agent [ @publication= ] 'publication'
[ , [ @subscriber = ] 'subscriber' ]
[ , [ @subscriber_db = ] 'subscriber_db' ]
[ , [ @subscriber_security_mode = ] subscriber_security_mode ]
[ , [ @subscriber_login = ] 'subscriber_login' ]
[ , [ @subscriber_password = ] 'subscriber_password' ]
[ , [ @job_login = ] 'job_login' ]
[ , [ @job_password = ] 'job_password' ]
[ , [ @job_name = ] 'job_name' ]
[ , [ @frequency_type = ] frequency_type ]
[ , [ @frequency_interval = ] frequency_interval ]
[ , [ @frequency_relative_interval = ] frequency_relative_interval ]
[ , [ @frequency_recurrence_factor = ] frequency_recurrence_factor ]
[ , [ @frequency_subday = ] frequency_subday ]
[ , [ @frequency_subday_interval = ] frequency_subday_interval ]
[ , [ @active_start_time_of_day = ] active_start_time_of_day ]
[ , [ @active_end_time_of_day = ] active_end_time_of_day ]
[ , [ @active_start_date = ] active_start_date ]
[ , [ @active_end_date = ] active_end_date ]
[ , [ @dts_package_name = ] 'dts_package_name' ]
[ , [ @dts_package_password = ] 'dts_package_password' ]
[ , [ @dts_package_location = ] 'dts_package_location' ]
[ , [ @enabled_for_syncmgr = ] 'enabled_for_syncmgr' ]
[ , [ @distribution_job_name = ] 'distribution_job_name' ]
[ , [ @publisher = ] 'publisher' ]
[ , [ @subscriber_provider = ] 'subscriber_provider' ]
[ , [ @subscriber_datasrc = ] 'subscriber_datasrc' ]
[ , [ @subscriber_location = ] 'subscriber_location' ]
[ , [ @subscriber_provider_string = ] 'subscriber_provider_string' ]
[ , [ @subscriber_catalog = ] 'subscriber_catalog' ]
参数
- [ @publication =] 'publication'
发布的名称。publication 的数据类型为 sysname,无默认值。
- [ @subscriber= ] 'subscriber'
订阅服务器的名称。subscriber 的数据类型为 sysname,默认值为 NULL。
- [ @subscriber_db=] 'subscriber_db'
订阅数据库的名称。subscriber_db 的数据类型为 sysname,默认值为 NULL。对于非 SQL Server 订阅服务器,为 subscriber_db 指定一个 (default destination) 值。
[ @subscriber_security_mode=] subscriber_security_mode
同步时连接到订阅服务器所使用的安全模式。subscriber_security_mode 的数据类型为 int,默认值为 1。0 指定 SQL Server 身份验证。1 指定 Windows 身份验证。安全说明: 对于在队列中排队的更新订阅,请将 SQL Server 验证用于与订阅服务器的连接,并为每个订阅服务器连接指定一个不同的帐户。对于所有其他订阅,则使用 Windows 身份验证。
- [ @subscriber_login =] 'subscriber_login'
同步时连接到订阅服务器所使用的订阅服务器登录名。 subscriber_login 的数据类型为 sysname,默认值为 NULL。
[ @subscriber_password=] 'subscriber_password'
订阅服务器密码。如果将 subscriber_security_mode 设置为 0,则 subscriber_password 是必需的。subscriber_password 的数据类型为 sysname,默认值为 NULL。如果使用订阅服务器密码,将自动对密码进行加密。安全说明: 不要使用空密码。请使用强密码。 如果可能,请在运行时提示用户输入安全凭据。如果将凭据存储在脚本文件中,则必须确保文件的安全,以防止未经授权的访问。
- [ @job_login = ] 'job_login'
运行代理时所用的 Windows 帐户的登录名。job_login 的数据类型为 nvarchar(257),默认值为 NULL。使用 Windows 集成身份验证时,此 Windows 帐户始终用于代理与分发服务器的连接,以及与订阅服务器的连接。
[ @job_password = ] 'job_password'
运行代理时所用的 Windows 帐户的密码。job_password 的数据类型为 sysname,无默认值。安全说明: 如果可能,请在运行时提示用户输入安全凭据。如果将凭据存储在脚本文件中,则必须确保文件的安全,以防止未经授权的访问。
- [ @job_name = ] 'job_name'
现有代理作业的名称。job_name 的数据类型为 sysname,默认值为 NULL。只有在使用现有作业而不是新创建的作业(此为默认设置)来同步订阅时,才需要指定此参数。如果不是 sysadmin 固定服务器角色的成员,则在指定 job_name 时,必须指定 job_login 和 job_password。
[ @frequency_type=] frequency_type
安排分发代理计划的频率。frequency_type 的数据类型为 int,可以是下列值之一。值 说明 1
一次
2
按需
4
每天
8
每周
16
每月
32
“每月”选项相关
64(默认值)
自动启动
128
重复执行
注意: 指定值 64 会使分发代理在连续模式下运行。这样与为代理设置 -Continuous 参数相对应。有关详细信息,请参阅Replication Distribution Agent。
- [ @frequency_interval=] frequency_interval
应用于由 frequency_type 所设频率的值。frequency_interval 的数据类型为 int,默认值为 1。
[ @frequency_relative_interval = ]frequency_relative_interval
分发代理的日期。当 frequency_type 设置为 32(与“每月”选项相关)时使用此参数。frequency_relative_interval 的数据类型为 int,可以是下列值之一。值 说明 1(默认值)
第一个
2
第二个
4
第三个
8
第四个
16
最后一个
- [ @frequency_recurrence_factor=] frequency_recurrence_factor
frequency_type 使用的重复因子。frequency_recurrence_factor 的数据类型为 int,默认值为 0。
[ @frequency_subday = ]frequency_subday
在指定期内重新安排计划的频率。frequency_subday 的数据类型为 int,可以是下列值之一。值 说明 1
一次
2
秒
4(默认值)
分钟
8
小时
- [ @frequency_subday_interval = ]frequency_subday_interval
frequency_subday 的间隔。frequency_subday_interval 的数据类型为 int,默认值为 5。
- [ @active_start_time_of_day = ] active_start_time_of_day
第一次安排分发代理的时间,格式为 HHMMSS。active_start_time_of_day 的数据类型为 int,默认值为 0。
- [ @active_end_time_of_day=] active_end_time_of_day
停止安排分发代理的时间,格式为 HHMMSS。active_end_time_of_day 的数据类型为 int,默认值为 235959。
- [ @active_start_date = ] active_start_date
第一次安排分发代理的日期,格式为 YYYYMMDD。active_start_date 的数据类型为 int,默认值为 0。
- [ @active_end_date = ] active_end_date
停止安排分发代理的日期,格式为 YYYYMMDD。active_end_date 的数据类型为 int,默认值为 99991231。
- [ @dts_package_name = ] 'dts_package_name'
指定 Data Transformation Services (DTS) 包的名称。dts_package_name 的数据类型为 sysname,默认值为 NULL。例如,若要将包名称指定为DTSPub_Package
,则该参数应为@dts_package_name = N'DTSPub_Package'
。
[ @dts_package_password = ] 'dts_package_password'
指定运行包所需的密码。dts_package_password 的数据类型为 sysname,默认值为 NULL。注意: 如果指定了 dts_package_name,则必须指定密码。
- [ @dts_package_location = ] 'dts_package_location'
指定包的位置。dts_package_location 的数据类型为 nvarchar(12),默认值为 DISTRIBUTOR。包的位置可以是 distributor 或 subscriber。
- [ @enabled_for_syncmgr=] 'enabled_for_syncmgr'
指示是否可以通过 Microsoft 同步管理器同步订阅。enabled_for_syncmgr 的数据类型为 nvarchar(5),默认值为 FALSE。如果为 false,则表示该订阅没有向同步管理器注册。如果为 true,则表示该订阅已向同步管理器注册,可以在不启动 SQL Server Management Studio 的情况下进行同步。
- [ @distribution_job_name= ] 'distribution_job_name'
仅供内部使用。
- [ @publisher =] 'publisher'
发布服务器的名称。publisher 的数据类型为 sysname,默认值为 NULL。
- [ @subscriber_provider= ] 'subscriber_provider'
非 SQL Server 数据源的 OLE DB 访问接口注册时使用的唯一编程标识符 (PROGID)。subscriber_provider 的数据类型为 sysname,默认值为 NULL。对于分发服务器上安装的 OLE DB 访问接口,subscriber_provider 必须是唯一的。只有非 SQL Server 订阅服务器才支持 subscriber_provider。
- [ @subscriber_datasrc= ] 'subscriber_datasrc'
OLE DB 访问接口识别的数据源名称。subscriber_datasrc 的数据类型为 nvarchar(4000),默认值为 NULL。subscriber_datasrc 将作为 DBPROP_INIT_DATASOURCE 属性传递以初始化 OLE DB 访问接口。只有非 SQL Server 订阅服务器才支持 subscriber_datasrc。
- [ @subscriber_location= ] 'subscriber_location'
OLE DB 访问接口识别的数据库位置。subscriber_location 的数据类型为 nvarchar(4000),默认值为 NULL。subscriber_location 将作为 DBPROP_INIT_LOCATION 属性传递以初始化 OLE DB 访问接口。只有非 SQL Server 订阅服务器才支持 subscriber_location。
- [ @subscriber_provider_string= ] 'subscriber_provider_string'
用于标识数据源的特定于 OLE DB 访问接口的连接字符串。subscriber_provider_string 的数据类型为 nvarchar(4000),默认值为 NULL。subscriber_provider_string 将传递给 IDataInitialize 或被设置为 DBPROP_INIT_PROVIDERSTRING 属性以初始化 OLE DB 访问接口。只有非 SQL Server 订阅服务器才支持 subscriber_provider_string。
- [ @subscriber_catalog= ] 'subscriber_catalog'
连接到 OLE DB 访问接口时使用的目录。subscriber_catalog 的数据类型为 sysname,默认值为 NULL。subscriber_catalog 将作为 DBPROP_INIT_CATALOG 属性传递以初始化 OLE DB 访问接口。只有非 SQL Server 订阅服务器才支持 subscriber_catalog。
返回代码值
0(成功)或 1(失败)
备注
sp_addpushsubscription_agent 用来复制快照和事务。
权限
只有 sysadmin 固定服务器角色成员或 db_owner 固定数据库角色成员才能执行 sp_addpushsubscription_agent。
示例
-- 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".
DECLARE @publication AS sysname;
DECLARE @subscriber AS sysname;
DECLARE @subscriptionDB AS sysname;
SET @publication = N'AdvWorksProductTran';
SET @subscriber = $(SubServer);
SET @subscriptionDB = N'AdventureWorksReplica';
--Add a push subscription to a transactional publication.
USE [AdventureWorks]
EXEC sp_addsubscription
@publication = @publication,
@subscriber = @subscriber,
@destination_db = @subscriptionDB,
@subscription_type = N'push';
--Add an agent job to synchronize the push subscription.
EXEC sp_addpushsubscription_agent
@publication = @publication,
@subscriber = @subscriber,
@subscriber_db = @subscriptionDB,
@job_login = $(Login),
@job_password = $(Password);
GO
请参阅
参考
复制存储过程 (Transact-SQL)
sp_addsubscription (Transact-SQL)
sp_changesubscription (Transact-SQL)
sp_dropsubscription (Transact-SQL)
sp_helpsubscription (Transact-SQL)
其他资源
如何创建推送订阅(复制 Transact-SQL 编程)
How to: Create a Subscription for a Non-SQL Server Subscriber (Replication Transact-SQL Programming)
订阅发布
帮助和信息
更改历史记录
发布日期 | 历史记录 |
---|---|
2006 年 12 月 12 日 |
|