將訂閱添加到發(fā)布并設(shè)置訂閱服務(wù)器的狀態(tài)。此存儲過程在發(fā)布服務(wù)器的發(fā)布數(shù)據(jù)庫上執(zhí)行。
sp_addsubscription [ @publication = ] 'publication'
[ , [ @article = ] 'article' ]
[ , [ @subscriber = ] 'subscriber' ]
[ , [ @destination_db = ] 'destination_db' ]
[ , [ @sync_type = ] 'sync_type' ]
[ , [ @status = ] 'status'
[ , [ @subscription_type = ] 'subscription_type' ]
[ , [ @update_mode = ] 'update_mode' ]
[ , [ @loopback_detection = ] 'loopback_detection' ]
[ , [ @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 ]
[ , [ @optional_command_line = ] 'optional_command_line' ]
[ , [ @reserved = ] 'reserved' ]
[ , [ @enabled_for_syncmgr = ] 'enabled_for_syncmgr' ]
[ , [ @offloadagent = ] remote_agent_activation ]
[ , [ @offloadserver = ] 'remote_agent_server_name' ]
[ , [ @dts_package_name = ] 'dts_package_name' ]
[ , [ @dts_package_password = ] 'dts_package_password' ]
[ , [ @dts_package_location = ] 'dts_package_location' ]
[ , [ @distribution_job_name = ] 'distribution_job_name' ]
[@publication = ] 'publication'
是發(fā)布名。publication 的數(shù)據(jù)類型為 sysname,沒有默認(rèn)設(shè)置。
[@article = ] 'article'
是對其訂閱發(fā)布的項(xiàng)目。article 的數(shù)據(jù)類型為 sysname,默認(rèn)設(shè)置為 all。項(xiàng)目名在發(fā)布內(nèi)必須唯一。如果是 all 或沒有提供,則表示將訂閱添加到該發(fā)布內(nèi)的所有項(xiàng)目。
[@subscriber = ] 'subscriber'
是訂閱服務(wù)器名。subscriber 的數(shù)據(jù)類型為 sysname,默認(rèn)設(shè)置為 NULL。
[@destination_db = ] 'destination_db'
是用來存放復(fù)制數(shù)據(jù)的目的數(shù)據(jù)庫名。destination_db 的數(shù)據(jù)類型為 sysname,默認(rèn)設(shè)置為 NULL,并且使用與發(fā)布數(shù)據(jù)庫相同的名稱。
[@sync_type = ] 'sync_type'
是訂閱同步類型。sync_type 的數(shù)據(jù)類型為 nvarchar(15),默認(rèn)設(shè)置為 automatic。可以是 automatic 或 none。如果是 automatic,則表示首先將已發(fā)布表的架構(gòu)和初始數(shù)據(jù)傳輸?shù)接嗛喎?wù)器。如果是 none,則假定訂閱服務(wù)器已有已發(fā)布表的架構(gòu)和初始數(shù)據(jù)。始終傳輸系統(tǒng)表和數(shù)據(jù)。
[@status = ] 'status'
是訂閱狀態(tài)。status 的數(shù)據(jù)類型為 sysname,可以是下列值之一。
值 | 描述 |
---|---|
Active | 如果 sync_type 是 none,則 status 的默認(rèn)設(shè)置為 active。若要啟用訂閱服務(wù)器以查看受限發(fā)布項(xiàng)目內(nèi)的項(xiàng)目,必須將占位符訂閱創(chuàng)建為不活動狀態(tài)。如果 sync_type 是 automatic,則 status 不能設(shè)置為 active。 |
Subscribed | 如果 sync_type 是 none 以外的值,則 status 的默認(rèn)設(shè)置為 subscribed。 |
NULL(默認(rèn)值) |
[@subscription_type = ] 'subscription_type'
是訂閱的類型。subscription_type 的數(shù)據(jù)類型為 nvarchar(4),默認(rèn)設(shè)置為 push??梢允?push 或 pull。push 訂閱的分發(fā)代理程序駐留在分發(fā)服務(wù)器上,而 pull 訂閱的分發(fā)代理程序駐留在訂閱服務(wù)器上。subscription_type 可以是 pull 以創(chuàng)建對發(fā)布服務(wù)器是已知的命名請求訂閱。有關(guān)更多信息,請參見訂閱發(fā)布。
說明 匿名訂閱無需使用此存儲過程。
[@update_mode = ] 'update_mode'
是更新的類型。update_mode 的數(shù)據(jù)類型為 nvarchar(30),可以是下列值之一。
值 | 描述 |
---|---|
read only(默認(rèn)值) | 該訂閱是只讀的。在訂閱服務(wù)器上所做的更改不會發(fā)送到發(fā)布服務(wù)器。 |
sync tran | 啟用對即時(shí)更新訂閱的支持。 |
queued tran | 啟用排隊(duì)更新的訂閱??梢栽谟嗛喎?wù)器上進(jìn)行數(shù)據(jù)修改,將其存儲在隊(duì)列中,然后傳播到發(fā)布服務(wù)器。 |
failover | 將排隊(duì)更新作為故障轉(zhuǎn)移的情況下啟用用于即時(shí)更新的訂閱??梢栽谟嗛喎?wù)器上進(jìn)行數(shù)據(jù)修改并立即傳播到發(fā)布服務(wù)器。如果發(fā)布服務(wù)器與訂閱服務(wù)器未連接在一起,則可以將在訂閱服務(wù)器上所做的數(shù)據(jù)修改存儲在隊(duì)列中,直到訂閱服務(wù)器與發(fā)布服務(wù)器重新連接在一起。 |
注意,如果訂閱的發(fā)布允許 DTS,則不允許值 synctran 和 queued tran。
[@loopback_detection = ] 'loopback_detection'
指定分發(fā)代理程序是否將在訂閱服務(wù)器上發(fā)起的事務(wù)發(fā)送回訂閱服務(wù)器。loopback_detection 的數(shù)據(jù)類型為 nvarchar(5),可以是下列值之一。
值 | 描述 |
---|---|
true | 分發(fā)代理程序不將從訂閱服務(wù)器上發(fā)起的事務(wù)發(fā)送回該訂閱服務(wù)器。僅當(dāng)訂閱 update_mode 的數(shù)據(jù)類型為 synctran 且項(xiàng)目表有發(fā)布的 timestamp 列時(shí),才能將值設(shè)置為 true。 |
false | 分發(fā)代理程序?qū)⒃谟嗛喎?wù)器上發(fā)起的事務(wù)發(fā)送回訂閱服務(wù)器: |
NULL(默認(rèn)值) |
[@frequency_type = ] frequency_type
是調(diào)度分發(fā)代理程序所用的頻率。frequency_type 的數(shù)據(jù)類型為 int,默認(rèn)設(shè)置為 NULL。如果未指定值,則 sp_addsubscription 將使用 sp_addsubscriber 中指定的值。
[@frequency_interval = ] frequency_interval
是應(yīng)用于 frequency_type 所設(shè)置頻率的值。frequency_interval 的數(shù)據(jù)類型為 int,默認(rèn)設(shè)置為 NULL。
[@frequency_relative_interval = ] frequency_relative_interval
是分發(fā)代理程序運(yùn)行的日期。當(dāng) frequency_type 設(shè)置為 32(每月相對信息)時(shí)使用該參數(shù)。frequency_relative_interval 的數(shù)據(jù)類型為 int,可以是下列值之一。
值 | 描述 |
---|---|
1 | 第一個(gè) |
2 | 秒 |
4 | 第三個(gè) |
8 | 第四個(gè) |
16 | 最后一個(gè) |
NULL(默認(rèn)值) |
[@frequency_recurrence_factor = ] frequency_recurrence_factor
是 frequency_type 使用的重復(fù)因子。frequency_recurrence_factor 的數(shù)據(jù)類型為 int,默認(rèn)設(shè)置為 NULL。
[@frequency_subday = ] frequency_subday
是在定義的周期內(nèi)重新調(diào)度的頻率(以分鐘為單位)。frequency_subday 的數(shù)據(jù)類型為 int,可以是下列值之一。
值 | 描述 |
---|---|
1 | 一次 |
2 | 秒 |
4 | 分鐘 |
8 | 小時(shí) |
NULL |
[@frequency_subday_interval = ] frequency_subday_interval
是 frequency_subday 的間隔。frequency_subday_interval 的數(shù)據(jù)類型為 int,默認(rèn)設(shè)置為 NULL。
[@active_start_time_of_day = ] active_start_time_of_day
是第一次調(diào)度分發(fā)代理程序的時(shí)間,格式為 HHMMSS。active_start_time_of_day 的數(shù)據(jù)類型為 int,默認(rèn)設(shè)置為 NULL。
[@active_end_time_of_day = ] active_end_time_of_day
是停止調(diào)度分發(fā)代理程序的時(shí)間,格式為 HHMMSS。active_end_time_of_day 的數(shù)據(jù)類型為 int,默認(rèn)設(shè)置為 NULL。
[@active_start_date = ] active_start_date
是第一次調(diào)度分發(fā)代理程序的日期,格式為 YYYYMMDD。active_start_date 的數(shù)據(jù)類型為 int,默認(rèn)設(shè)置為 NULL。
[@active_end_date = ] active_end_date
是停止調(diào)度分發(fā)代理程序的日期,格式為 YYYYMMDD。active_end_date 的數(shù)據(jù)類型為 int,默認(rèn)設(shè)置為 NULL。
[@optional_command_line = ] 'optional_command_line'
是要執(zhí)行的可選命令提示符。optional_command_line 的數(shù)據(jù)類型為 nvarchar(4000),默認(rèn)設(shè)置為 NULL。
[@reserved = ] 'reserved'
僅限內(nèi)部使用。
[@enabled_for_syncmgr = ] 'enabled_for_syncmgr'
表示是否可以通過 Microsoft Windows 同步管理器對訂閱進(jìn)行同步處理。enabled_for_syncmgr 的數(shù)據(jù)類型為 nvarchar(5),默認(rèn)設(shè)置為 FALSE。如果是 false,則表示該訂閱沒有注冊到 Windows 同步管理器上。如果是 true,則表示該訂閱注冊到 Windows 同步管理器上,可以在不啟動 SQL Server 企業(yè)管理器的情況下進(jìn)行同步處理。
[@offloadagent = ] 'remote_agent_activation'
指定可以遠(yuǎn)程地激活代理程序。remote_agent_activationt 的數(shù)據(jù)類型為 bit,默認(rèn)設(shè)置為 0。0 指定不能遠(yuǎn)程地激活代理程序。1 指定可以遠(yuǎn)程地激活代理程序。
[@offloadserver = ] 'remote_agent_server_name'
指定用于遠(yuǎn)程激活的服務(wù)器的網(wǎng)絡(luò)名。remote_agent_server_name 的數(shù)據(jù)類型為 sysname,默認(rèn)設(shè)置為 NULL。
[@dts_package_name = ] 'dts_package_name'
指定 DTS 包的名稱。dts_package_name 的數(shù)據(jù)類型為 sysname,默認(rèn)設(shè)置為 NULL。例如,若要指定 DTSPub_Package 包,則該參數(shù)將是 @dts_package_name = N'DTSPub_Package'。該參數(shù)可用于強(qiáng)制訂閱。若要向請求訂閱添加 DTS 包信息,請使用 sp_addpullsubscription_agent。
[@dts_package_password = ] 'dts_package_password'
指定如果有密碼,則密碼在包上。dts_package_password 的數(shù)據(jù)類型為 sysname,默認(rèn)設(shè)置為 NULL,表示包沒有密碼。
[@dts_package_location = ] 'dts_package_location'
指定包的位置。dts_package_location 的數(shù)據(jù)類型為 nvarchar(12),默認(rèn)設(shè)置為 DISTRIBUTOR。包的位置可以是 distributor 或 subscriber。
[@distribution_job_name = ] 'distribution_job_name'
僅限內(nèi)部使用。
0(成功)或 1(失?。?/P>
sp_addsubscription 用于快照復(fù)制和事務(wù)復(fù)制。
sp_addsubscription 禁止 ODBC 和 OLE DB 訂閱服務(wù)器訪問下列發(fā)布:
另外,如果發(fā)布將 allow_queued_tran 選項(xiàng)設(shè)置為 true(表示在訂閱服務(wù)器上啟用更改隊(duì)列,直到它們可在發(fā)布服務(wù)器上應(yīng)用),項(xiàng)目中的時(shí)間戳列將寫成 timestamp 腳本,而此列中的更改將發(fā)送到訂閱服務(wù)器。訂閱服務(wù)器將生成并更新時(shí)間戳列值。對于 ODBC/OLE DB 訂閱服務(wù)器,如果嘗試訂閱的發(fā)布將 allow_queued_tran 設(shè)置為 true 且包含帶時(shí)間戳列的項(xiàng)目,則 sp_addsubscription 將失敗。
如果訂閱不使用 DTS 包,則不能訂閱已設(shè)置為 allow_transformable_subscriptions 的發(fā)布。如果來自發(fā)布的表需要重新應(yīng)用于 DTS 訂閱和非 DTS 訂閱,則必須分別創(chuàng)建兩種發(fā)布。每種發(fā)布針對一種類型的訂閱。
只有 sysadmin 固定服務(wù)器角色成員或 db_owner 固定數(shù)據(jù)庫角色成員才能執(zhí)行 sp_addsubscription。對于請求訂閱,在發(fā)布訪問列表中有登錄的用戶可以執(zhí)行 sp_addsubscription。
相關(guān)文章