更改事務(wù)或快照發(fā)布中的項(xiàng)目屬性。此存儲(chǔ)過(guò)程在發(fā)布服務(wù)器的發(fā)布數(shù)據(jù)庫(kù)上執(zhí)行。
sp_changearticle [ [@publication = ] 'publication' ]
[ , [ @article = ] 'article' ]
[ , [ @property = ] 'property' ]
[ , [ @value = ] 'value' ]
[ , [ @force_invalidate_snapshot = ] force_invalidate_snapshot ]
[ , [ @force_reinit_subscription = ] force_reinit_subscription ]
[@publication =] 'publication'
是包含該項(xiàng)目的發(fā)布名。publication 的數(shù)據(jù)類型為 sysname,默認(rèn)設(shè)置為 NULL。
[@article =] 'article'
是要更改其屬性的項(xiàng)目名。article 的數(shù)據(jù)類型為 sysname,默認(rèn)設(shè)置為 NULL。
[@property =] 'property'
是要更改的項(xiàng)目屬性。property 的數(shù)據(jù)類型為 nvarchar(20)。
[@value =] 'value'
是項(xiàng)目屬性的新值。value 的數(shù)據(jù)類型為 nvarchar(255)。
下表描述項(xiàng)目的屬性和這些屬性的值。
屬性 | 值 | 描述 |
---|---|---|
description | 發(fā)布作業(yè)的新描述項(xiàng)。 | |
sync_object | 用于生成同步輸出文件的表或視圖的名稱。默認(rèn)設(shè)置為 NULL。 | |
type | logbased(默認(rèn)值)= 基于日志的項(xiàng)目。 Logbased manualfilter = 帶手工篩選的基于日志的項(xiàng)目。 Logbased manualview = 帶手工視圖的基于日志的項(xiàng)目。 Logbased manualboth = 帶手工篩選和手工視圖的基于日志的項(xiàng)目。 | 項(xiàng)目類型。 |
ins_cmd | 要執(zhí)行的 INSERT 語(yǔ)句,否則從日志構(gòu)造。 | |
del_cmd | 要執(zhí)行的 DELETE 語(yǔ)句,否則從日志構(gòu)造。 | |
upd_cmd | 要執(zhí)行的 UPDATE 語(yǔ)句,否則從日志構(gòu)造。 | |
filter | 要用于篩選表(水平篩選)的新存儲(chǔ)過(guò)程。默認(rèn)設(shè)置為 NULL。 | |
dest_table | 新目的表。 | |
dest_object | 為向后兼容性而提供。使用 dest_table。 | |
creation_script | 用于創(chuàng)建目標(biāo)表的項(xiàng)目架構(gòu)腳本的路徑和名稱。默認(rèn)設(shè)置為 NULL。 | |
pre_creation_cmd | 可以在應(yīng)用同步之前除去、刪除或截?cái)嗄康谋淼念A(yù)創(chuàng)建命令。 | |
none | 不使用命令。 | |
drop | 除去目的表。 | |
delete | 刪除目的表。 | |
truncate | 截?cái)嗄康谋怼?/TD> | |
status | 指定屬性的新?tīng)顟B(tài)。 | |
include column names | 在復(fù)制 INSERT 語(yǔ)句中允許有列名。 | |
no column names | 在復(fù)制 INSERT 語(yǔ)句中不允許有列名。 | |
owner qualified | 允許使用所有者限定的表名。 | |
not owner qualified | 允許使用不是所有者限定的表名。 | |
string literals | parameters | 指定日志讀取器生成的命令是使用標(biāo)準(zhǔn)字符串文字命令格式還是新參數(shù)化命令格式。 | |
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 等)。 | |
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 語(yǔ)句將表項(xiàng)目上的主鍵和唯一鍵作為約束復(fù)制。 | |
destination_owner | destination_owner | 目的對(duì)象所有者的名稱。 |
NULL | NULL |
[@force_invalidate_snapshot = ] force_invalidate_snapshot
確認(rèn)此存儲(chǔ)過(guò)程采取的操作可能使現(xiàn)有快照無(wú)效。force_invalidate_snapshot 的數(shù)據(jù)類型為 bit,默認(rèn)設(shè)置為 0。0 指定對(duì)項(xiàng)目的更改不會(huì)導(dǎo)致快照無(wú)效。如果存儲(chǔ)過(guò)程檢測(cè)到更改確實(shí)需要新快照,則會(huì)發(fā)生錯(cuò)誤,且不會(huì)進(jìn)行任何更改。而 1 指定對(duì)項(xiàng)目所做的更改可能導(dǎo)致快照無(wú)效,而且如果現(xiàn)有訂閱需要新的快照,則提供適當(dāng)?shù)臋?quán)限,使現(xiàn)有快照被標(biāo)記為廢棄并生成新快照。
[@force_reinit_subscription = ] force_reinit_subscription
確認(rèn)此存儲(chǔ)過(guò)程采取的操作可能要求重新初始化現(xiàn)有的訂閱。force_reinit_subscription 的數(shù)據(jù)類型為 bit,默認(rèn)設(shè)置為 0。0 指定對(duì)項(xiàng)目的更改不會(huì)導(dǎo)致重新初始化訂閱。如果存儲(chǔ)過(guò)程檢測(cè)到更改需要重新初始化訂閱,則會(huì)發(fā)生錯(cuò)誤,且不會(huì)進(jìn)行任何更改。而 1 指定對(duì)項(xiàng)目的更改將導(dǎo)致重新初始化現(xiàn)有的訂閱,且提供使訂閱重新初始化發(fā)生的權(quán)限。
0(成功)或 1(失?。?/P>
sp_changearticle 用于快照復(fù)制和事務(wù)復(fù)制。
在現(xiàn)有發(fā)布內(nèi),不必除去然后重新創(chuàng)建整個(gè)發(fā)布,就可以使用 sp_changearticle 更改某個(gè)項(xiàng)目。
該表描述如果用戶傳遞的是 NULL 值,則為存儲(chǔ)過(guò)程選擇的 @schema_option 默認(rèn)值。默認(rèn)值基于表的第一行中顯示的復(fù)制類型和第一列中顯示的項(xiàng)目類型??諉卧硎緹o(wú)效的項(xiàng)目類型和復(fù)制類型對(duì),因而沒(méi)有默認(rèn)值。
項(xiàng)目類型 | 復(fù)制類型 | |
---|---|---|
事務(wù)復(fù)制 | 快照復(fù)制 | |
logbased | 0xF3 | 0x71 |
logbased manualfilter | 0xF3 | 0x71 |
logbased manualview | 0xF3 | 0x71 |
indexed view logbased | 0xF3 | 0x71 |
indexed view logbased manualfilter | 0xF3 | 0x71 |
indexed view logbased manualview | 0xF3 | 0x71 |
indexed view logbase manualboth | 0xF3 | 0x71 |
proc exec | 0x01 | 0x01 |
serialized proc exec | 0x01 | 0x01 |
proc schema only | 0x01 | 0x01 |
view schema only | 0x01 | 0x01 |
func schema only | 0x01 | 0x01 |
indexed view schema only | 0x01 | 0x01 |
table |
說(shuō)明 如果為排隊(duì)更新啟用了發(fā)布,則 @schema_option 值 0x8000 和 0x0080 將被添加到下表所顯示的默認(rèn)值中。
有效架構(gòu)選項(xiàng)表
項(xiàng)目類型 | 復(fù)制類型 | |
---|---|---|
事務(wù)復(fù)制 | 快照復(fù)制 | |
logbased | 所有選項(xiàng) | 除 0x02 之外的所有選項(xiàng) |
logbased manualfilter | 所有選項(xiàng) | 除 0x02 之外的所有選項(xiàng) |
logbased manualview | 所有選項(xiàng) | 除 0x02 之外的所有選項(xiàng) |
indexed view logbased | 所有選項(xiàng) | 除 0x02 之外的所有選項(xiàng) |
indexed view logbased manualfilter | 所有選項(xiàng) | 除 0x02 之外的所有選項(xiàng) |
indexed view logbased manualview | 所有選項(xiàng) | 除 0x02 之外的所有選項(xiàng) |
indexed view logbase manualboth | 所有選項(xiàng) | 除 0x02 之外的所有選項(xiàng) |
proc exec | 0x01 和 0x2000 | 0x01 和 0x2000 |
serialized proc exec | 0x01 和 0x2000 | 0x01 和 0x2000 |
proc schema only | 0x01 和 0x2000 | 0x01 和 0x2000 |
view schema only | 0x01、0x0100 和 0x2000 | 0x01、0x0100 和 0x2000 |
func schema only | 0x01 和 0x2000 | 0x01 和 0x2000 |
indexed view schema only | 0x01、0x10、0x040、0x0100 和 0x2000 | 0x01、0x10、0x040、0x0100 和 0x2000 |
table |
說(shuō)明 對(duì)于排隊(duì)更新發(fā)布,必須啟用 @schema_option 值 0x8000 和 0x80。
只有 sysadmin 固定服務(wù)器角色成員或 db_owner 固定數(shù)據(jù)庫(kù)角色成員才能執(zhí)行 sp_changearticle。
相關(guān)文章