2010-07-29 41 views
1

用於在SQL Server中創建發佈項目的sp_addarticle存儲過程有一個參數@pre_creation_cmd,通過該參數可以爲目標服務器指定刪除表或截斷數據的快照。每種情況適合哪種情況?SQL Server複製刪除與目標表截斷

回答

1

@pre_creation_cmd接受四個值之一:

  • NONE
  • DELETE
  • DROP
  • TRUNCATE

刪除表格

假設你發表的文章 數據被過濾並且在 認購 相應的表接收來自其他 源的數據,可能例如另一個公開 。對此參數使用DELETE 操作將 刪除「僅」滿足 過濾器定義條件的數據, 將剩餘數據保留在 訂閱者處。

TRUNCATE TABLE

刪除表中的所有行,而不 登錄個人行刪除。 TRUNCATE TABLE類似於沒有WHERE子句的 DELETE語句;然而,TRUNCATE TABLE更快,並且 使用更少的系統和事務日誌 資源。

DROP TABLE

刪除一個或多個表定義 和所有數據,索引,觸發器, 約束和權限 規範這些表。

+0

謝謝約翰,什麼情況會使一個選項比另一個更可取?假設有一個實際的區別,這就是爲什麼我問。 – PMSawyer 2010-07-29 15:04:14

+0

例如,TRUNCATE被認爲是比DELETE更好的執行操作。您也無法對使用外鍵引用的表執行TRUNCATE操作。相反,DELETE和TRUNCATE都不會刪除與DROP操作將執行的索引等表關聯的對象。 – 2010-07-29 16:26:21

+0

如果我對複製方面的理解正確,如果有一個表沒有外鍵引用,請使用TRUNCATE,因爲它表現更好。否則,我們會刪除數據並降低性能。謝謝。 – PMSawyer 2010-07-30 12:28:45