將列添加到已發(fā)布的現(xiàn)有表項目中。允許將新列添加到發(fā)布該表的所有發(fā)布服務(wù)器,或者只將新列添加到發(fā)布該表的特定發(fā)布中。此存儲過程在發(fā)布服務(wù)器的發(fā)布數(shù)據(jù)庫上執(zhí)行。
sp_repladdcolumn [
@source_object = ]
'source_object
'
, [
@column = ]
'column
' ]
[ , [ @typetext = ] 'typetext' ]
[ , [ @publication_to_add = ] 'publication_to_add' ]
[ , [ @schema_change_script = ] 'schema_change_script' ]
[ , [ @force_invalidate_snapshot = ] force_invalidate_snapshot ]
[ , [ @force_reinit_subscription = ] force_reinit_subscription ]
[@source_object =] 'source_object'
是包含要添加的新列的表項目名。source_object 的數(shù)據(jù)類型為 nvarchar(358),無默認(rèn)值。
[@column =] 'column'
是表中將添加為復(fù)制的列名。column 的數(shù)據(jù)類型為 sysname,無默認(rèn)值。
[@typetext =] 'typetext'
是正添加的列的定義。typetext 的數(shù)據(jù)類型為 nvarchar(3000),無默認(rèn)值。例如,如果正添加列 order_filled,且該列是單字符字段,而不是 NULL,并且有默認(rèn)值 N,則 order_filled 將是 column 參數(shù),而列定義"char(1) NOT NULL DEFAULT 'N'"將是 typetext 參數(shù)值。
[@publication_to_add =] 'publication_to_add'
是將新列添加到的發(fā)布名。publication_to_add 的數(shù)據(jù)類型為 nvarchar(4000),默認(rèn)值為 ALL。如果為 all,則將影響所有包含該表的發(fā)布。如果已指定 publication_to_add,則只將新列添加到此發(fā)布中。
[@schema_change_script =] 'schema_change_script'
是 SQL 腳本的路徑。schema_change_script 的數(shù)據(jù)類型為 nvarchar(4000),默認(rèn)值為 NULL。
[@force_invalidate_snapshot = ] force_invalidate_snapshot
啟用或禁用使快照無效的能力。force_invalidate_snapshot 的數(shù)據(jù)類型為 bit,默認(rèn)值為 1。1 指定項目的更改可能導(dǎo)致快照無效,如果真是這樣,則值 1 提供產(chǎn)生新快照的權(quán)限。0 指定項目的更改不會導(dǎo)致快照無效。
[@force_reinit_subscription = ] force_reinit_subscription
啟用或禁用使訂閱重新初始化的能力。force_reinit_subscription 的數(shù)據(jù)類型為 bit,默認(rèn)值為 0。0 指定項目的更改不會導(dǎo)致訂閱重新初始化。1 指定項目的更改可能導(dǎo)致訂閱重新初始化,如果真是這樣,則值 1 提供重新初始化訂閱的權(quán)限。
0(成功)或 1(失敗)
sp_repladdcolumn 用于所有類型的復(fù)制。
當(dāng)使用 sp_repladdcolumn 時,如果對某個項目的架構(gòu)做了更改,而該項目所屬的發(fā)布使用 DTS 包,則架構(gòu)更改不會傳播到訂閱服務(wù)器,并且在訂閱服務(wù)器上不會重新生成 INSERT/UPDATE/DELETE 的自定義過程。用戶需要手工重新生成 DTS 包,并在訂閱服務(wù)器上生成相應(yīng)的架構(gòu)更改。如果不應(yīng)用架構(gòu)更新,則分發(fā)代理程序應(yīng)用隨后的修改將失敗。生成架構(gòu)更改之前,確保沒有要傳送的掛起事務(wù)。有關(guān)更多信息,請參見如何轉(zhuǎn)換已發(fā)布數(shù)據(jù)。
對于字符模式的發(fā)布,將篩選出時間戳列和計算列。如果使用 sp_repladdcolumn 添加時間戳或計算列,則這些發(fā)布的訂閱不接收此新列。
重要 應(yīng)在執(zhí)行 sp_repladdcolumn 后執(zhí)行發(fā)布數(shù)據(jù)庫的備份。如果沒有這樣做,會在發(fā)布數(shù)據(jù)庫還原后導(dǎo)致合并失敗。