sp_addmergesubscription (Transact-SQL)
更新: 2007 年 9 月 15 日
建立發送或提取合併訂閱。這個預存程序執行於發行集資料庫的發行者端。
語法
sp_addmergesubscription [ @publication= ] 'publication'
[ , [ @subscriber = ] 'subscriber' ]
[ , [ @subscriber_db= ] 'subscriber_db' ]
[ , [ @subscription_type= ] 'subscription_type' ]
[ , [ @subscriber_type= ] 'subscriber_type' ]
[ , [ @subscription_priority= ] subscription_priority ]
[ , [ @sync_type= ] 'sync_type' ]
[ , [ @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' ]
[ , [ @description= ] 'description' ]
[ , [ @enabled_for_syncmgr= ] 'enabled_for_syncmgr' ]
[ , [ @offloadagent= ] remote_agent_activation]
[ , [ @offloadserver= ] 'remote_agent_server_name' ]
[ , [ @use_interactive_resolver= ] 'use_interactive_resolver' ]
[ , [ @merge_job_name= ] 'merge_job_name' ]
[ , [ @hostname = ] 'hostname'
引數
- [ @publication=] 'publication'
這是發行集的名稱。publication 是 sysname,沒有預設值。發行集必須已存在。
- [ @subscriber =] 'subscriber'
這是訂閱者的名稱。subscriber 是 sysname,預設值是 NULL。
- [ @subscriber_db=] 'subscriber_db'
這是訂閱資料庫的名稱。subscriber_db 是 sysname,預設值是 NULL。
[ @subscription_type=] 'subscription_type'
這是訂閱的類型。subscription_type 是 nvarchar(15),預設值是 PUSH。如果是 push,就會新增發送訂閱,且會在散發者端新增合併代理程式。如果是 pull,就會新增提取訂閱,但不會在散發者端新增合併代理程式。附註: 匿名訂閱不需要使用這個預存程序。
[ @subscriber_type=] 'subscriber_type'
這是訂閱者的類型。subscriber_type 是 nvarchar(15),它可以是下列值之一。值 描述 local (預設值)
只有發行者知道的訂閱者。
global
所有伺服器都知道的訂閱者。
在 SQL Server 2005 中,本機訂閱稱為客訂閱,全域訂閱稱為主訂閱。如需詳細資訊,請參閱<合併式複寫如何偵測並解決衝突>中的「訂閱類型」一節。
- [ @subscription_priority=] subscription_priority
這是指示訂閱優先權的數字。subscription_priority 是 real,預設值是 NULL。如果是本機和匿名訂閱,優先權就是 0.0。如果是全域訂閱,優先權必須小於 100.0。
[ @sync_type=] 'sync_type'
這是訂閱同步處理類型。sync_type 是 nvarchar(15),預設值是 automatic。它可以是 automatic 或 none。如果是 automatic,便先將發行資料表的結構描述和初始資料傳送給訂閱者。如果是 none,便假設訂閱者已有發行資料表的結構描述和初始資料。一律會傳送系統資料表和資料。附註: 我們不建議指定 none 的值。如需詳細資訊,請參閱<不使用快照集初始化合併訂閱>。
[ @frequency_type=] frequency_type
這是指出合併代理程式執行時間的值。frequency_type 是 int,它可以是下列值之一。值 描述 1
一次
4
每日
8
每週
10
每月
20
每月,相對於頻率間隔
40
當 SQL Server Agent 啟動時
NULL (預設值)
[ @frequency_interval=] frequency_interval
合併代理程式執行的日期。frequency_interval 是 int,它可以是下列值之一。值 描述 1
星期日
2
星期一
3
星期二
4
星期三
5
星期四
6
星期五
7
星期六
8
日
9
工作日
10
週末
NULL (預設值)
[ @frequency_relative_interval=] frequency_relative_interval
這是每月排程的頻率間隔合併出現項目。frequency_relative_interval 是 int,它可以是下列值之一。值 描述 1
第一個
2
秒
4
第三個
8
第四個
16
最後一個
NULL (預設值)
- [ @frequency_recurrence_factor=] frequency_recurrence_factor
這是 frequency_type 所用的循環因數。frequency_recurrence_factor 是 int,預設值是 NULL。
[ @frequency_subday=] frequency_subday
這是 frequency_subday_interval 的單位。frequency_subday 是 int,它可以是下列值之一。值 描述 1
一次
2
秒
4
分鐘
8
小時
NULL (預設值)
- [ @frequency_subday_interval=] frequency_subday_interval
這是每次合併之間所發生之 frequency_subday 的頻率。frequency_subday_interval 是 int,預設值是 NULL。
- [ @active_start_time_of_day=] active_start_time_of_day
這是第一次排程合併代理程式的當日時間,格式為 HHMMSS。active_start_time_of_day 是 int,預設值是 NULL
- [ @active_end_time_of_day=] active_end_time_of_day
這是排程停止合併代理程式的當日時間,格式為 HHMMSS。active_end_time_of_day 是 int,預設值是 NULL。
- [ @active_start_date=] active_start_date
這是第一次排程合併代理程式的日期,格式為 YYYYMMDD。active_start_date 是 int,預設值是 NULL。
- [ @active_end_date=] active_end_date
這是排程停止合併代理程式的日期,格式為 YYYYMMDD。active_end_date 是 int,預設值是 NULL。
- [ @optional_command_line=] 'optional_command_line'
這是要執行的選擇性命令提示字元。optional_command_line 是 nvarchar(4000),預設值是 NULL。這個參數用來新增擷取輸出以及將輸出儲存在檔案中的命令,或指定組態檔或屬性。
- [ @description=] 'description'
這是這項合併訂閱的簡要描述。description 是 nvarchar(255),預設值是 NULL。複寫監視器會在易記名稱資料行中顯示這個值,這個資料行可用來排序所監視之發行集的訂閱。
- [ @enabled_for_syncmgr=] 'enabled_for_syncmgr'
指定是否能夠利用 Microsoft Windows Synchronization Manager 同步處理訂閱。enabled_for_syncmgr 是 nvarchar(5),預設值是 FALSE。如果是 false,便不用向 Synchronization Manager 註冊訂閱。如果是 true,便要向 Synchronization Manager 註冊訂閱,且不需要啟動 Microsoft SQL Server Management Studio,就可以同步處理。
[ @offloadagent= ] remote_agent_activation
指定可以從遠端啟動代理程式。remote_agent_activation 是 bit,預設值是 0。附註: 這個參數已被取代,維護它的目的,只是為了與舊版的指令碼相容。
- [ @offloadserver= ] 'remote_agent_server_name'
指定將用來啟動遠端代理程式之伺服器的網路名稱。remote_agent_server_name 是 sysname,預設值是 NULL。
- [ @use_interactive_resolver= ] 'use_interactive_resolver'
可讓您以互動方式來解決接受互動式解決之所有發行項的衝突。use_interactive_resolver 是 nvarchar(5),預設值是 FALSE。
- [ @merge_job_name= ] 'merge_job_name'
針對這項訂閱而新增之合併代理程式作業的名稱。merge_job_name 是 sysname,預設值是 NULL。這個參數使您能夠提供合併代理程式作業名稱,以便稍後管理這項作業。
[ @hostname= ] 'hostname'
當在參數化篩選的 WHERE 子句中使用這個函數時,覆寫 HOST_NAME 傳回的值。Hostname 是 sysname,預設值是 NULL。重要事項: 基於效能的考量,我們建議您不要在參數化資料列篩選子句中,將函數套用至資料行名稱上,如 LEFT([MyColumn]) = SUSER_SNAME()
。如果您在篩選子句中使用 HOST_NAME,且置換了 HOST_NAME 值,您可能需要利用 CONVERT 來轉換資料類型。如需有關這個情況最佳作法的詳細資訊,請參閱<參數化資料列篩選>主題中的「覆寫 HOST_NAME() 值」一節。
傳回碼值
0 (成功) 或 1 (失敗)
備註
sp_addmergesubscription 用於合併式複寫中。
當系統管理員 (sysadmin) 固定伺服器角色的成員執行 sp_addmergesubscription 來建立發送訂閱時,會隱含地建立合併代理程式作業,且會利用 SQL Server Agent 服務帳戶來執行這項作業。我們建議您執行 sp_addmergepushsubscription_agent,以及在 @job_login 和 @job_password 中指定特定代理程式專用的不同 Windows 帳戶的認證。如需詳細資訊,請參閱<複寫代理程式安全性模型>。
權限
只有系統管理員 (sysadmin) 固定伺服器角色或 db_owner 固定資料庫角色的成員,才能夠執行 sp_addmergesubscription。
範例
-- 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;
DECLARE @hostname AS sysname;
SET @publication = N'AdvWorksSalesOrdersMerge';
SET @subscriber = $(SubServer);
SET @subscriptionDB = N'AdventureWorksReplica';
SET @hostname = N'adventure-works\david8'
-- Add a push subscription to a merge publication.
USE [AdventureWorks]
EXEC sp_addmergesubscription
@publication = @publication,
@subscriber = @subscriber,
@subscriber_db = @subscriptionDB,
@subscription_type = N'push',
@hostname = @hostname;
--Add an agent job to synchronize the push subscription.
EXEC sp_addmergepushsubscription_agent
@publication = @publication,
@subscriber = @subscriber,
@subscriber_db = @subscriptionDB,
@job_login = $(Login),
@job_password = $(Password);
GO
請參閱
參考
sp_changemergesubscription (Transact-SQL)
sp_dropmergesubscription (Transact-SQL)
sp_helpmergesubscription (Transact-SQL)
其他資源
如何:建立發送訂閱 (複寫 Transact-SQL 程式設計)
如何:建立提取訂閱 (複寫 Transact-SQL 程式設計)
互動式衝突解決
訂閱發行集
說明及資訊
變更歷程記錄
版本 | 歷程記錄 |
---|---|
2007 年 9 月 15 日 |
|