2011-11-02 33 views
0

是否有可能將MS SQL-Server設置爲從表中刪除最長的行時,如果它變得太大?如果不是,我應該使用某種觸發器還是應該在應用程序端使用定時事件?當數據庫表增長過大時,自動刪除最舊的行?

我的情況是,我剛剛爲Web應用程序實現了一個日誌記錄解決方案。記錄大量信息是一項要求,因此數據庫在一年左右內會變得太大,我感覺沒有人會維護數據庫。尋找這個問題的最佳解決方案。

+0

什麼是太大?爲什麼它太「不好」?數據庫的恢復模式是什麼?數據模型是什麼樣的?它應該刪除所有表中的行,還是應該刪除某些應該刪除的表,同時還要說參考表是?大小和清理工作如何運行,我們是否有權訪問計劃程序?我們在談論什麼版本的SQL Server? – billinkc

+1

也許每年(月?)對錶中的數據進行分區是一種選擇?這樣就不需要刪除舊的數據。如果使用日期過濾器進行查詢,則較舊的表格將無法訪問。 – Wolph

回答

3

與其試圖提前確定什麼是太大,我建議您定義一個業務規則(存儲過程,配置表等),可以設置爲控制記錄保留多少天。

然後,您可以安排作業在夜間通過SQL Server運行,這將刪除比指定條件更早的所有日誌記錄。

通過這種方式,您和您的用戶將確切知道日誌系統的期望值(即您只能訪問30天的日誌文件)。

如果將其與常規備份策略結合使用,那麼在需要較舊記錄的情況下,可以從備份中檢索這些記錄。

0

您可以使用資源調控器來衡量資源使用情況或定義檢查數據庫文件大小的作業,然後調用將從數據庫表中刪除數據的SP。