更改事務或快照發(fā)布中的項目屬性。此存儲過程在發(fā)布服務器的發(fā)布數(shù)據(jù)庫上執(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'
是包含該項目的發(fā)布名。publication 的數(shù)據(jù)類型為 sysname,默認設置為 NULL。
[@article =] 'article'
是要更改其屬性的項目名。article 的數(shù)據(jù)類型為 sysname,默認設置為 NULL。
[@property =] 'property'
是要更改的項目屬性。property 的數(shù)據(jù)類型為 nvarchar(20)。
[@value =] 'value'
是項目屬性的新值。value 的數(shù)據(jù)類型為 nvarchar(255)。
下表描述項目的屬性和這些屬性的值。
| 屬性 | 值 | 描述 |
|---|---|---|
| description | 發(fā)布作業(yè)的新描述項。 | |
| sync_object | 用于生成同步輸出文件的表或視圖的名稱。默認設置為 NULL。 | |
| type | logbased(默認值)= 基于日志的項目。 Logbased manualfilter = 帶手工篩選的基于日志的項目。 Logbased manualview = 帶手工視圖的基于日志的項目。 Logbased manualboth = 帶手工篩選和手工視圖的基于日志的項目。 | 項目類型。 |
| ins_cmd | 要執(zhí)行的 INSERT 語句,否則從日志構造。 | |
| del_cmd | 要執(zhí)行的 DELETE 語句,否則從日志構造。 | |
| upd_cmd | 要執(zhí)行的 UPDATE 語句,否則從日志構造。 | |
| filter | 要用于篩選表(水平篩選)的新存儲過程。默認設置為 NULL。 | |
| dest_table | 新目的表。 | |
| dest_object | 為向后兼容性而提供。使用 dest_table。 | |
| creation_script | 用于創(chuàng)建目標表的項目架構腳本的路徑和名稱。默認設置為 NULL。 | |
| pre_creation_cmd | 可以在應用同步之前除去、刪除或截斷目的表的預創(chuàng)建命令。 | |
| none | 不使用命令。 | |
| drop | 除去目的表。 | |
| delete | 刪除目的表。 | |
| truncate | 截斷目的表。 | |
| status | 指定屬性的新狀態(tài)。 | |
| include column names | 在復制 INSERT 語句中允許有列名。 | |
| no column names | 在復制 INSERT 語句中不允許有列名。 | |
| owner qualified | 允許使用所有者限定的表名。 | |
| not owner qualified | 允許使用不是所有者限定的表名。 | |
| string literals | parameters | 指定日志讀取器生成的命令是使用標準字符串文字命令格式還是新參數(shù)化命令格式。 | |
| schema_option | 指定給定項目的架構生成選項位圖。schema_option 的數(shù)據(jù)類型為 binary(8)。如果該值是 NULL,則系統(tǒng)將為該項目自動生成有效架構選項。"注釋"中給出的表顯示基于項目類型和復制類型的組合而選擇的值。另外,并非所有的 schema_option 值對每個復制類型和項目類型都有效。"注釋"中給出的"有效架構選項"表顯示可基于項目類型和復制類型的組合進行選擇的有效架構選項。 | |
| 0x00 | 禁用由初始同步提供的腳本并使用提供的創(chuàng)建腳本。 | |
| 0x01 | 生成對象創(chuàng)建(CREATE TABLE、CREATE PROCEDURE 等)。 | |
| 0x10 | 生成對應的聚集索引。 | |
| 0x20 | 將用戶定義數(shù)據(jù)類型轉換為基本數(shù)據(jù)類型。 | |
| 0x40 | 生成對應的非聚集索引。 | |
| 0x80 | 在主鍵上包含聲明引用完整性。 | |
| 0x100 | 如果已定義,則復制表項目上的用戶觸發(fā)器。 | |
| 0x200 | 復制外鍵約束。如果引用的表不是發(fā)布的一部分,則將不復制已發(fā)布表上的所有外鍵約束。 | |
| 0x400 | 復制檢查約束。 | |
| 0x800 | 復制默認值。 | |
| 0x1000 | 復制列級排序規(guī)則。 | |
| 0x2000 | 復制與已發(fā)布項目源對象關聯(lián)的擴展的屬性。 | |
| 0x4000 | 如果在表項目上定義了唯一鍵,則復制唯一鍵。 | |
| 0x8000 | 使用 ALTER TABLE 語句將表項目上的主鍵和唯一鍵作為約束復制。 | |
| destination_owner | destination_owner | 目的對象所有者的名稱。 |
| NULL | NULL |
[@force_invalidate_snapshot = ] force_invalidate_snapshot
確認此存儲過程采取的操作可能使現(xiàn)有快照無效。force_invalidate_snapshot 的數(shù)據(jù)類型為 bit,默認設置為 0。0 指定對項目的更改不會導致快照無效。如果存儲過程檢測到更改確實需要新快照,則會發(fā)生錯誤,且不會進行任何更改。而 1 指定對項目所做的更改可能導致快照無效,而且如果現(xiàn)有訂閱需要新的快照,則提供適當?shù)臋嘞?,使現(xiàn)有快照被標記為廢棄并生成新快照。
[@force_reinit_subscription = ] force_reinit_subscription
確認此存儲過程采取的操作可能要求重新初始化現(xiàn)有的訂閱。force_reinit_subscription 的數(shù)據(jù)類型為 bit,默認設置為 0。0 指定對項目的更改不會導致重新初始化訂閱。如果存儲過程檢測到更改需要重新初始化訂閱,則會發(fā)生錯誤,且不會進行任何更改。而 1 指定對項目的更改將導致重新初始化現(xiàn)有的訂閱,且提供使訂閱重新初始化發(fā)生的權限。
0(成功)或 1(失?。?/P>
sp_changearticle 用于快照復制和事務復制。
在現(xiàn)有發(fā)布內,不必除去然后重新創(chuàng)建整個發(fā)布,就可以使用 sp_changearticle 更改某個項目。
該表描述如果用戶傳遞的是 NULL 值,則為存儲過程選擇的 @schema_option 默認值。默認值基于表的第一行中顯示的復制類型和第一列中顯示的項目類型。空單元表示無效的項目類型和復制類型對,因而沒有默認值。
| 項目類型 | 復制類型 | |
|---|---|---|
| 事務復制 | 快照復制 | |
| 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 | ||
說明 如果為排隊更新啟用了發(fā)布,則 @schema_option 值 0x8000 和 0x0080 將被添加到下表所顯示的默認值中。
有效架構選項表
| 項目類型 | 復制類型 | |
|---|---|---|
| 事務復制 | 快照復制 | |
| logbased | 所有選項 | 除 0x02 之外的所有選項 |
| logbased manualfilter | 所有選項 | 除 0x02 之外的所有選項 |
| logbased manualview | 所有選項 | 除 0x02 之外的所有選項 |
| indexed view logbased | 所有選項 | 除 0x02 之外的所有選項 |
| indexed view logbased manualfilter | 所有選項 | 除 0x02 之外的所有選項 |
| indexed view logbased manualview | 所有選項 | 除 0x02 之外的所有選項 |
| indexed view logbase manualboth | 所有選項 | 除 0x02 之外的所有選項 |
| 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 | ||
說明 對于排隊更新發(fā)布,必須啟用 @schema_option 值 0x8000 和 0x80。
只有 sysadmin 固定服務器角色成員或 db_owner 固定數(shù)據(jù)庫角色成員才能執(zhí)行 sp_changearticle。
相關文章