sp_addpushsubscription_agent (Transact-SQL)

加入一項新排程的代理程式作業,以便用來同步處理發送訂閱與交易式發行集。這個預存程序執行於發行集資料庫的發行者端。

安全性注意事項安全性注意事項

當利用遠端散發者來設定發行者時,提供給所有參數的值 (包括 job_loginjob_password) 都會以純文字的方式傳給散發者。您應該先加密「發行者」及其遠端「散發者」之間的連接,再執行這個預存程序。如需詳細資訊,請參閱<加密 SQL Server 的連接>。

主題連結圖示 Transact-SQL 語法慣例


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'

這是發行集的名稱。publicationsysname,沒有預設值。

[@subscriber =] 'subscriber'

這是訂閱者的名稱。subscribersysname,預設值是 NULL。

[@subscriber_db=] 'subscriber_db'

這是訂閱資料庫的名稱。subscriber_dbsysname,預設值是 NULL。如果是非 SQL Server 訂閱者,請為 subscriber_db 指定 (預設目的地) 的值。

[@subscriber_security_mode=] subscriber_security_mode

這是進行同步處理時,連接到訂閱者時使用的安全性模式。subscriber_security_modeint,預設值是 1。0 指定 SQL Server 驗證。1 指定 Windows 驗證。

安全性注意事項安全性注意事項

對於佇列更新訂閱,請利用 SQL Server 驗證來連接訂閱者,以及指定不同的連接帳戶給每個訂閱者。對於其他所有訂閱,請使用 Windows 驗證。

[@subscriber_login =] 'subscriber_login'

這是進行同步處理時,連接到訂閱者時使用的訂閱者登入。subscriber_loginsysname,預設值是 NULL。

[@subscriber_password=] 'subscriber_password'

這是訂閱者密碼。如果 subscriber_security_mode 設為 0,則需要 subscriber_passwordsubscriber_passwordsysname,預設值是 NULL。如果使用訂閱者密碼,它會自動加密。

安全性注意事項安全性注意事項

請勿使用空白密碼。請使用增強式密碼。可能的話,會在執行階段提示使用者輸入安全性認證。如果您必須將認證儲存在指令碼檔案中,則必須維護這個檔案的安全性,使他人無法在未獲授權的情況下擅自存取。

[@job_login = ] 'job_login'

這是執行代理程式之 Windows 帳戶的登入。job_loginnvarchar(257),預設值是 NULL。使用 Windows 整合式驗證時,對於通往散發者的代理程式連接及通往訂閱者的連接,一律使用這個 Windows 帳戶。

[@job_password = ] 'job_password'

這是執行代理程式之 Windows 帳戶的密碼。job_passwordsysname,沒有預設值。

安全性注意事項安全性注意事項

可能的話,會在執行階段提示使用者輸入安全性認證。如果您必須將認證儲存在指令碼檔案中,則必須維護這個檔案的安全性,使他人無法在未獲授權的情況下擅自存取。

[@job_name = ] 'job_name'

這是現有代理程式作業的名稱。job_namesysname,預設值是 NULL。只有在訂閱將利用現有的作業來同步處理,而不用新建立的作業 (預設值) 時,才指定這個參數。如果您不是系統管理員 (sysadmin) 固定伺服器角色的成員,當您指定 job_name 時,必須指定 job_loginjob_password

[@frequency_type = ] frequency_type

這是散發代理程式的排程頻率。frequency_typeint,它可以是下列值之一。

描述

1

一次

2

視需要

4

每日

8

每週

16

每月

32

每月相對

64 (預設值)

自動啟動

128

重複執行

附註附註

指定 64 的值會導致散發代理程式以連續模式執行。這就相當於設定代理程式的 -Continuous 參數。如需詳細資訊,請參閱<複寫散發代理程式>。

[@frequency_interval = ] frequency_interval

這是 frequency_type 設定的頻率所套用的值。frequency_intervalint,預設值是 1。

[@frequency_relative_interval = ] frequency_relative_interval

這是散發代理程式的日期。當 frequency_type 設為 32 (每月相對) 時,則使用這個參數。frequency_relative_intervalint,它可以是下列值之一。

描述

1 (預設值)

第一個

2

第二個

4

第三個

8

第四個

16

最後一個

[@frequency_recurrence_factor = ] frequency_recurrence_factor

這是 frequency_type 所用的循環因數。frequency_recurrence_factorint,預設值是 0。

[@frequency_subday = ] frequency_subday

在定義的期間內,重新排程的頻率。frequency_subdayint,它可以是下列值之一。

描述

1

一次

2

秒鐘

4 (預設值)

分鐘

8

小時

[@frequency_subday_interval = ] frequency_subday_interval

這是 frequency_subday 的間隔。frequency_subday_intervalint,預設值是 5。

[@active_start_time_of_day = ] active_start_time_of_day

這是第一次排程散發代理程式的當日時間,格式為 HHMMSS。active_start_time_of_dayint,預設值是 0。

[@active_end_time_of_day = ] active_end_time_of_day

這是停止對散發代理程式進行排程的當日時間,格式為 HHMMSS。active_end_time_of_dayint,預設值是 235959。

[@active_start_date = ] active_start_date

這是第一次排程散發代理程式的日期,格式為 YYYYMMDD。active_start_dateint,預設值是 0。

[@active_end_date = ] active_end_date

這是停止對散發代理程式進行排程的日期,格式為 YYYYMMDD。active_end_dateint,預設值是 99991231。

[@dts_package_name = ] 'dts_package_name'

指定 Data Transformation Services (DTS) 封裝的名稱。dts_package_namesysname,預設值是 NULL。例如,若要指定 DTSPub_Package 的封裝名稱,這個參數便是 @dts_package_name = N'DTSPub_Package'

[@dts_package_password = ] 'dts_package_password'

指定封裝執行所需的密碼。dts_package_passwordsysname,預設值是 NULL。

附註附註

如果指定了 dts_package_name,則必須指定密碼。

[@dts_package_location = ] 'dts_package_location'

指定封裝位置。dts_package_locationnvarchar(12),預設值是 DISTRIBUTOR。封裝位置可以是散發者訂閱者

[@enabled_for_syncmgr = ] 'enabled_for_syncmgr'

這是指是否能夠利用 Microsoft Synchronization Manager 同步處理訂閱。enabled_for_syncmgrnvarchar(5),預設值是 FALSE。如果是 false,便不用向 Synchronization Manager 註冊訂閱。如果是 true,便要向 Synchronization Manager 註冊訂閱,且不需要啟動 SQL Server Management Studio,就可以同步處理。

[@distribution_job_name = ] 'distribution_job_name'

僅供參考之用。不支援。我們無法保證未來的相容性。

[@publisher = ] 'publisher'

這是發行者的名稱。publishersysname,預設值是 NULL。

[@subscriber_provider= ] 'subscriber_provider'

這是非 SQL Server 資料來源的 OLE DB 提供者登錄所用的唯一程式識別碼 (PROGID)。subscriber_providersysname,預設值是 NULL。subscriber_provider 對安裝在散發者端的 OLE DB 提供者必須是唯一的。只有非 SQL Server 訂閱者才支援 subscriber_provider

[@subscriber_datasrc= ] 'subscriber_datasrc'

這是 OLE DB 提供者所瞭解的資料來源名稱。subscriber_datasrcnvarchar(4000),預設值是 NULL。subscriber_datasrc 作為 DBPROP_INIT_DATASOURCE 屬性傳遞,以初始化 OLE DB 提供者。只有非 SQL Server 訂閱者才支援 subscriber_datasrc

[@subscriber_location= ] 'subscriber_location'

這是 OLE DB 提供者所瞭解的資料庫位置。subscriber_locationnvarchar(4000),預設值是 NULL。subscriber_location 作為 DBPROP_INIT_LOCATION 屬性傳遞,以初始化 OLE DB 提供者。只有非 SQL Server 訂閱者才支援 subscriber_location

[@subscriber_provider_string= ] 'subscriber_provider_string'

這是 OLE DB 提供者特定的連接字串,用來識別資料來源。subscriber_provider_stringnvarchar(4000),預設值是 NULL。將 subscriber_provider_string 傳遞到 IDataInitialize 或設為 DBPROP_INIT_PROVIDERSTRING 屬性,以初始化 OLE DB 提供者。只有非 SQL Server 訂閱者才支援 subscriber_provider_string

[@subscriber_catalog= ] 'subscriber_catalog'

這是建立 OLE DB 提供者連接時所用的目錄。subscriber_catalogsysname,預設值是 NULL。subscriber_catalog 作為 DBPROP_INIT_CATALOG 屬性傳遞,以初始化 OLE DB 提供者。只有非 SQL Server 訂閱者才支援 subscriber_catalog

0 (成功) 或 1 (失敗)

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'AdventureWorks2008R2Replica';

--Add a push subscription to a transactional publication.
USE [AdventureWorks2008R2]
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


只有系統管理員 (sysadmin) 固定伺服器角色或 db_owner 固定資料庫角色的成員,才能夠執行 sp_addpushsubscription_agent

社群新增項目

新增
顯示: