在現(xiàn)有的合并發(fā)布中添加項(xiàng)目。此存儲(chǔ)過程在發(fā)布服務(wù)器的發(fā)布數(shù)據(jù)庫上執(zhí)行。
sp_addmergearticle [ @publication = ] 'publication'
,
[ @article = ] 'article'
,
[ @source_object = ] 'source_object'
[ , [ @type = ] 'type' ]
[ , [ @description = ] 'description' ]
[ , [ @column_tracking = ] 'column_tracking' ]
[ , [ @status = ] 'status' ]
[ , [ @pre_creation_cmd = ] 'pre_creation_cmd' ]
[ , [ @creation_script = ] 'creation_script' ]
[ , [ @schema_option = ] schema_option ]
[ , [ @subset_filterclause = ] 'subset_filterclause' ]
[ , [ @article_resolver = ] 'article_resolver' ]
[ , [ @resolver_info = ] 'resolver_info' ]
[ , [ @source_owner = ] 'source_owner' ]
[ , [ @destination_owner = ] 'destination_owner' ]
[ , [ @vertical_partition = ] 'vertical_partition' ]
[ , [ @auto_identity_range = ] 'auto_identity_range' ]
[ , [ @pub_identity_range = ] pub_identity_range ]
[ , [ @identity_range = ] identity_range ]
[ , [ @threshold = ] threshold ]
[ , [ @verify_resolver_signature = ] verify_resolver_signature ]
[ , [ @destination_object = ] 'destination_object' ]
[ , [ @allow_interactive_resolver = ] 'allow_interactive_resolver' ]
[ , [ @fast_multicol_updateproc = ] 'fast_multicol_updateproc' ]
[ , [ @check_permissions = ] check_permissions ]
[ , [ @force_invalidate_snapshot = ] force_invalidate_snapshot ]
[@publication = ] 'publication'
是包含該項(xiàng)目的發(fā)布名。publication 的數(shù)據(jù)類型為 sysname,沒有默認(rèn)設(shè)置。
[@article = ] 'article'
是項(xiàng)目名。article 的數(shù)據(jù)類型為 sysname,沒有默認(rèn)設(shè)置。article 必須為本地 SQL Server 計(jì)算機(jī),而且必須遵從標(biāo)識(shí)符規(guī)則。
[@source_object = ] 'source_object'
是從其中添加項(xiàng)目的源對(duì)象名稱。source_object 的數(shù)據(jù)類型為 sysname,沒有默認(rèn)設(shè)置。
[@type = ] 'type'
是項(xiàng)目類型。type 的數(shù)據(jù)類型為 sysname,默認(rèn)設(shè)置為 table,可以是下列值之一。
值 | 描述 |
---|---|
table(默認(rèn)值) | 項(xiàng)目監(jiān)視表以確定已復(fù)制數(shù)據(jù)。 |
indexed view schema only | 項(xiàng)目監(jiān)視索引視圖和架構(gòu)以確定源數(shù)據(jù)。 |
view schema only | 項(xiàng)目監(jiān)視視圖和架構(gòu)以確定源數(shù)據(jù)。 |
proc schema only | 項(xiàng)目使用存儲(chǔ)過程執(zhí)行和架構(gòu)以確定源數(shù)據(jù)。 |
func schema only | 項(xiàng)目使用用戶定義的函數(shù)執(zhí)行和架構(gòu)以確定源數(shù)據(jù)。 |
NULL(默認(rèn)值) |
[@description = ] 'description'
是對(duì)項(xiàng)目的描述。description 的數(shù)據(jù)類型為 nvarchar(255),默認(rèn)設(shè)置為 NULL。
[@column_tracking = ] 'column_tracking'
是列級(jí)跟蹤的設(shè)置。column_tracking 的數(shù)據(jù)類型為 nvarchar(10),默認(rèn)設(shè)置為 FALSE。true 打開列跟蹤。而 false 關(guān)閉列跟蹤并在行級(jí)上保留沖突檢測。如果已在其它合并發(fā)布中發(fā)布了表,則必須使用與基于該表的現(xiàn)有項(xiàng)目所用的相同的列跟蹤值。該參數(shù)只專用于表項(xiàng)目。
[@status = ] 'status'
是項(xiàng)目狀態(tài)。status 的數(shù)據(jù)類型為 nvarchar(10),默認(rèn)設(shè)置為 unsynced。如果是 active,則表示發(fā)布表的初始處理腳本已運(yùn)行。如果是 unsynced,則表示發(fā)布表的初始處理腳本在下一次運(yùn)行快照代理程序時(shí)運(yùn)行。
[@pre_creation_cmd = ] 'pre_creation_cmd'
如果表存在于訂閱服務(wù)器上,指定系統(tǒng)在應(yīng)用快照時(shí)所采取的操作。pre_creation_cmd 的數(shù)據(jù)類型為 nvarchar(10),可以是下列值之一。
值 | 描述 |
---|---|
None | 如果表已在訂閱服務(wù)器上存在,則不采取任何操作。 |
Delete | 根據(jù)子集篩選中的 WHERE 子句發(fā)出刪除命令。 |
drop(默認(rèn)值) | 重新創(chuàng)建表之前先除去表。 |
Truncate | 與 delete 相同,但是刪除頁而非行。不要使用 WHERE 子句。 |
[@creation_script = ] 'creation_script'
是項(xiàng)目的可選架構(gòu)預(yù)創(chuàng)建腳本。creation_script 的數(shù)據(jù)類型為 nvarchar(255),默認(rèn)設(shè)置為 NULL。
[@schema_option = ] schema_option
是給定項(xiàng)目的架構(gòu)生成選項(xiàng)位圖。schema_option 的數(shù)據(jù)類型為 binary(8),可以是下列值之一。如果該值是 NULL,則系統(tǒng)將為該項(xiàng)目自動(dòng)生成有效架構(gòu)選項(xiàng)。"注釋"中給出的表顯示基于項(xiàng)目類型和復(fù)制類型的組合而選擇的值。另外,并非所有的 @schema_option 值對(duì)每個(gè)復(fù)制類型和項(xiàng)目類型都有效。"注釋"中給出的"有效架構(gòu)選項(xiàng)"表顯示可基于項(xiàng)目類型和復(fù)制類型的組合進(jìn)行選擇的有效架構(gòu)選項(xiàng)。
值 | 描述 |
---|---|
0x00 | 禁用由快照代理程序使用的腳本并使用提供的創(chuàng)建腳本。 |
0x01 | 生成對(duì)象創(chuàng)建(CREATE TABLE、CREATE PROCEDURE 等)。它是存儲(chǔ)過程項(xiàng)目的默認(rèn)值。 |
0x10 | 生成對(duì)應(yīng)的聚集索引。 |
0x20 | 將用戶定義數(shù)據(jù)類型轉(zhuǎn)換為基本數(shù)據(jù)類型。 |
0x40 | 生成對(duì)應(yīng)的非聚集索引。 |
0x80 | 在主鍵上包含聲明引用完整性。 |
0x100 | 如果已定義,則復(fù)制表項(xiàng)目上的用戶觸發(fā)器。 |
0x200 | 復(fù)制外鍵約束。如果引用的表不是發(fā)布的一部分,則將不復(fù)制已發(fā)布表上的所有外鍵約束。 |
0x400 | 復(fù)制檢查約束。 |
0x800 | 復(fù)制默認(rèn)值。 |
0x1000 | 復(fù)制列級(jí)排序規(guī)則。 |
0x2000 | 復(fù)制與已發(fā)布項(xiàng)目源對(duì)象關(guān)聯(lián)的擴(kuò)展的屬性。 |
0x4000 | 如果在表項(xiàng)目上定義了唯一鍵,則復(fù)制唯一鍵。 |
0x8000 | 使用 ALTER TABLE 語句將表項(xiàng)目上的主鍵和唯一鍵復(fù)制為約束。 |
[@subset_filterclause = ] 'subset_filterclause'
是 WHERE 子句,它指定表項(xiàng)目的水平篩選,不包含單詞 WHERE。subset_filterclause 的數(shù)據(jù)類型為 nvarchar(1000),默認(rèn)設(shè)置為空字符串。有關(guān)更多信息,請(qǐng)參見自動(dòng)生成篩選。
[@article_resolver = ] 'article_resolver'
是用于解決表項(xiàng)目上的沖突的沖突解決程序。article_resolver 的數(shù)據(jù)類型為 varchar(255),默認(rèn)設(shè)置為 NULL。此參數(shù)的可用值列在 Microsoft 沖突解決程序描述中。如果提供的值不是一個(gè) Microsoft 沖突解決程序,則 SQL Server 使用指定的沖突解決程序代替系統(tǒng)所提供的沖突解決程序。使用 sp_enumcustomresolvers 枚舉可用自定義沖突解決程序的列表。
[@resolver_info = ] 'resolver_info'
是用于指定自定義沖突解決程序所需的附加信息。某些 Microsoft 沖突解決程序要求將列作為沖突解決程序的輸入提供。resolver_info 的數(shù)據(jù)類型為 nvarchar(255),默認(rèn)設(shè)置為 NULL。有關(guān)更多信息,請(qǐng)參見 Microsoft 沖突解決程序描述。
[@source_owner = ] 'source_owner'
是 source_object 所有者的名稱。source_owner 的數(shù)據(jù)類型為 sysname,默認(rèn)設(shè)置為 NULL。如果是 NULL,則假定當(dāng)前用戶為所有者。
[@destination_owner = ] 'destination_owner'
是訂閱數(shù)據(jù)庫中的對(duì)象所有者(如果不是"dbo")。destination_owner 的數(shù)據(jù)類型為 sysname,默認(rèn)設(shè)置為 NULL。如果是 NULL,則假設(shè)"dbo"為所有者。
[@vertical_partition = ] 'column_filter'
啟用和禁用表項(xiàng)目上的列篩選。vertical_partition 的數(shù)據(jù)類型為 nvarchar(5),默認(rèn)設(shè)置為 FALSE。false 表示沒有垂直篩選,并發(fā)布所有的列。而 true 清除除聲明的主鍵和 ROWGUID 外的所有列。列通過 sp_articlecolumn 被添加。
[@auto_identity_range = ] 'automatic_identity_range'
在創(chuàng)建發(fā)布時(shí)啟用和禁用對(duì)發(fā)布上的表項(xiàng)目的自動(dòng)標(biāo)識(shí)范圍處理。auto_identity_range 的數(shù)據(jù)類型為 nvarchar(5),默認(rèn)設(shè)置為 FALSE。true 啟用自動(dòng)標(biāo)識(shí)范圍處理,false 則禁用它。有關(guān)更多信息,請(qǐng)參見管理標(biāo)識(shí)值。
[@pub_identity_range = ] pub_identity_range
控制發(fā)布服務(wù)器上的范圍大小(如果項(xiàng)目的 auto_identity_range 已設(shè)置為 true)。auto_identity_range 的數(shù)據(jù)類型為 bigint,默認(rèn)設(shè)置為 NULL。
[@identity_range = ] identity_range
控制訂閱服務(wù)器上的范圍大小(如果項(xiàng)目的 auto_identity_range 已設(shè)置為 true)。identity_range 的數(shù)據(jù)類型為 bigint,默認(rèn)設(shè)置為 NULL。
[@threshold = ] threshold
控制合并代理程序何時(shí)指派新標(biāo)識(shí)范圍的百分比值。當(dāng)使用在 threshold 中指定的百分比值時(shí),合并代理程序創(chuàng)建新標(biāo)識(shí)范圍。threshold 的數(shù)據(jù)類型為 int,默認(rèn)設(shè)置為 NULL。當(dāng) auto_identity_range 設(shè)置為 true 時(shí)使用該參數(shù)。
[@verify_resolver_signature = ] verify_resolver_signature
指定是否在將沖突解決程序用于合并復(fù)制之前驗(yàn)證數(shù)字簽名。verify_resolver_signature 的數(shù)據(jù)類型為 int,默認(rèn)設(shè)置為 0。0 指定將不驗(yàn)證簽名。1 指定將驗(yàn)證簽名以查看它的來源是否可信。有關(guān)更多信息,請(qǐng)參見Replication Signature Verification Constants (SQLDMO_VERIFYSIGNATURE_TYPE)。
[@destination_object = ] 'destination_object'
是訂閱數(shù)據(jù)庫中的對(duì)象名稱。destination_object 的數(shù)據(jù)類型為 sysname,默認(rèn)設(shè)置與 @source_object 中的設(shè)置相同。只有當(dāng)項(xiàng)目是純架構(gòu)的項(xiàng)目,如存儲(chǔ)過程、視圖和 UDF 時(shí),才能指定此參數(shù)。如果指定的項(xiàng)目為表項(xiàng)目,則 @source_object 中的值將重寫 destination_object 中的值。
[@allow_interactive_resolver = ] 'allow_interactive_resolver'
在項(xiàng)目上啟用或禁用交互式?jīng)_突解決程序。allow_interactive_resolver 的數(shù)據(jù)類型為 nvarchar(5),默認(rèn)設(shè)置為 FALSE。true 在項(xiàng)目上啟用交互式?jīng)_突解決程序;而 false 禁用它。
[@fast_multicol_updateproc = ] 'fast_multicol_updateproc'
啟用或禁用合并代理程序以對(duì)一個(gè) UPDATE 語句中同一行內(nèi)的多個(gè)列進(jìn)行更改。fast_multicol_updateproc 的數(shù)據(jù)類型為 nvarchar(5),默認(rèn)設(shè)置為 TRUE。true 更新一個(gè)語句中的多個(gè)列。而 false 對(duì)每個(gè)更改的列分別發(fā)出 UPDATE。出于性能上的考慮,如果更新兩個(gè)或更多的列,最好將該值設(shè)置為 true。但是,如果表上有這樣的用戶觸發(fā)器,它在通過 IF UPDATE(col) 檢測到的特定列的更新時(shí)會(huì)產(chǎn)生錯(cuò)誤,則應(yīng)將該選項(xiàng)設(shè)置為 false。即使那列未更新為新值,IF UPDATE(col) 仍將檢測到列的更新并產(chǎn)生錯(cuò)誤。這是因?yàn)樵趯⑦x項(xiàng)設(shè)置為 true 時(shí),所有的列(除了象篩選中所涉及的列這樣的特殊列)都在一個(gè) UPDATE 語句中設(shè)置。如果特定列的值未更改,它即被設(shè)置為原來的值。
[@check_permissions = ] check_permissions
是表級(jí)權(quán)限的位圖,當(dāng)合并代理程序?qū)Πl(fā)布服務(wù)器進(jìn)行更改時(shí)系統(tǒng)會(huì)對(duì)其進(jìn)行驗(yàn)證。如果合并進(jìn)程所使用的發(fā)布服務(wù)器登錄/用戶帳戶沒有正確的表權(quán)限,則無效更改將會(huì)記錄為沖突。check_permissions 的數(shù)據(jù)類型為 int,可以是下列值之一。
值 | 描述 |
---|---|
0x00(默認(rèn)值) | 將不檢查權(quán)限。 |
0x10 | 在可以上載訂閱服務(wù)器上的 INSERT 操作之前檢查發(fā)布服務(wù)器上的權(quán)限。 |
0x20 | 在可以上載訂閱服務(wù)器上的 UPDATE 操作之前檢查發(fā)布服務(wù)器上的權(quán)限。 |
0x40 | 在可以上載訂閱服務(wù)器上進(jìn)行的 DELETE 操作之前檢查發(fā)布服務(wù)器上的權(quán)限。 |
[@force_invalidate_snapshot = ] force_invalidate_snapshot
確認(rèn)此存儲(chǔ)過程所采取的操作可能會(huì)使現(xiàn)有的快照無效。force_invalidate_snapshot 的數(shù)據(jù)類型為 bit,默認(rèn)設(shè)置為 0。0 指定添加項(xiàng)目不會(huì)導(dǎo)致快照無效。如果存儲(chǔ)過程檢測到更改確實(shí)需要新快照,則會(huì)發(fā)生錯(cuò)誤,且不會(huì)進(jìn)行任何更改。而 1 指定添加項(xiàng)目可能會(huì)導(dǎo)致快照無效,而且如果有需要新快照的現(xiàn)有訂閱,則值 1 將提供適當(dāng)?shù)臋?quán)限,使現(xiàn)有快照被標(biāo)記為廢棄并生成新快照。
0(成功)或 1(失?。?/P>
sp_addmergearticle 用于合并復(fù)制。
該表描述如果用戶傳遞的是 NULL 值,則為存儲(chǔ)過程選擇的 @schema_option 默認(rèn)值。默認(rèn)值基于表的第一行中顯示的復(fù)制類型和第一列中顯示的項(xiàng)目類型。空單元表示無效的項(xiàng)目類型和復(fù)制類型組合,因而沒有默認(rèn)值。
項(xiàng)目類型 | 復(fù)制類型 |
---|---|
合并 | |
logbased | |
logbased manualfilter | |
logbased manualview | |
indexed view logbased | |
indexed view logbased manualfilter | |
indexed view logbased manualview | |
indexed view logbase manualboth | |
proc exec | |
serialized proc exec | |
proc schema only | 0x01 |
view schema only | 0x01 |
func schema only | 0x01 |
indexed view schema only | 0x01 |
table | 0xccf1 |
有效架構(gòu)選項(xiàng)表
項(xiàng)目類型 | 復(fù)制類型 |
---|---|
合并 | |
logbased | |
logbased manualfilter | |
logbased manualview | |
indexed view logbased | |
indexed view logbased manualfilter | |
indexed view logbased manualview | |
indexed view logbase manualboth | |
proc exec | 0x01 和 0x2000 |
serialized proc exec | 0x01 和 0x2000 |
proc schema only | 0x01 和 0x2000 |
view schema only | 0x01、0x0100 和 0x2000 |
func schema only | 0x01 和 0x2000 |
indexed view schema only | 0x01、0x10、0x040、0x0100 和 0x2000 |
table | 除 0x02 和 0x8000 外的所有選項(xiàng) |
只有 sysadmin 固定服務(wù)器角色成員或 db_owner 固定數(shù)據(jù)庫角色成員才能執(zhí)行 sp_addmergearticle。
相關(guān)文章