從已發(fā)布的現(xiàn)有表項(xiàng)目中除去列。此存儲(chǔ)過程在發(fā)布服務(wù)器的發(fā)布數(shù)據(jù)庫(kù)上執(zhí)行。
sp_repldropcolumn [ @source_object = ] 'source_object'
, [ @column = ] 'column'
[ , [ @schema_change_script = ] 'schema_change_script' ]
[ , [ @force_invalidate_snapshot = ] force_invalidate_snapshot ]
[ , [ @force_reinit_subscription = ] force_reinit_subscription ]
[@source_object =] 'source_object'
是包含要除去的列的表項(xiàng)目名。source_object 的數(shù)據(jù)類型為 nvarchar(258),無默認(rèn)值。
[@column =] 'column'
是表中要除去的列名。column 的數(shù)據(jù)類型為 sysname,無默認(rèn)值。
[@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 指定項(xiàng)目的更改可能導(dǎo)致快照無效,如果真是這樣,則值 1 提供產(chǎn)生新快照的權(quán)限。0 指定項(xiàng)目的更改不會(huì)導(dǎo)致快照無效。
[@force_reinit_subscription = ] force_reinit_subscription
啟用或禁用使訂閱重新初始化的能力。force_reinit_subscription 的數(shù)據(jù)類型為 bit,默認(rèn)值為 0。0 指定項(xiàng)目的更改不會(huì)導(dǎo)致訂閱重新初始化。1 指定項(xiàng)目的更改可能導(dǎo)致訂閱重新初始化,如果真是這樣,則值 1 提供重新初始化訂閱的權(quán)限。
0(成功)或 1(失敗)
sp_repldropcolumn 用于所有類型的復(fù)制。
當(dāng)使用 sp_repldropcolumn 時(shí),如果對(duì)某個(gè)項(xiàng)目的架構(gòu)做了更改,而該項(xiàng)目所屬的發(fā)布使用 DTS 包,則架構(gòu)更改不會(huì)傳播到訂閱服務(wù)器,并且在訂閱服務(wù)器上不會(huì)重新生成 INSERT/UPDATE/DELETE 的自定義過程。用戶需要手工重新生成 DTS 包,并在訂閱服務(wù)器上生成相應(yīng)的架構(gòu)更改。如果不應(yīng)用架構(gòu)更新,則分發(fā)代理程序應(yīng)用隨后的修改將失敗。生成架構(gòu)更改之前,確保沒有要傳送的掛起事務(wù)。有關(guān)更多信息,請(qǐng)參見如何轉(zhuǎn)換已發(fā)布數(shù)據(jù)。
重要 應(yīng)在執(zhí)行 sp_repldropcolumn后執(zhí)行發(fā)布數(shù)據(jù)庫(kù)的備份。如果沒有這樣做,會(huì)在發(fā)布數(shù)據(jù)庫(kù)還原后導(dǎo)致合并失敗。