我有一個表Tab_Log
,每天填滿數千行。每週我都需要根據創建日期清理90%的行。使用delete
語句可以工作,但是由於所有刪除都會被記錄,所以資源密集。我的第二個想法是將我不想從Tab_Log
中刪除的數據插入臨時表truncate Tab_Log
,然後將臨時表中的記錄插回。我擔心的是,在此過程中,用戶可能在查詢期間詢問Tab_Log
截斷並重新插入進程和接收和錯誤。SQL Server 2005定期清理表沒有導致用戶錯誤
那麼如何快速擦洗這張表而不會給用戶造成錯誤呢?有沒有辦法來安全地鎖定表,以便任何傳入的查詢請求將等待而不是錯誤?
SQL Server的*版本*是你的嗎?企業/標準/快遞等 –
@MartinSmith - 企業 – Coltech
更好地問這個問題,以dba.stackexchange.com。作爲一名具有DBA經驗的開發人員,我的答案是使用分區。請參閱http://blogs.msdn.com/b/felixmar/archive/2011/02/14/partitioning-amp-archiving-tables-in-sql-server-part-1-the-basics.aspx。檔案部分在第二篇文章 – LostInComputer