2010/08/18

SQL2005 刪除交易檔

一早聽夥伴在詢問顧問交易檔的事,問說要怎麼清交易檔
覺的很奇怪,既然都問那麼多次而得不到答案,怎沒考慮自己上網去找?
手癢加無聊就自己找了 (雖然人家認為這不是我的工作),結果也才三行指令... (攤手)


首先,用現有的資料庫作 [還原資料庫],然後還原的目的地指定到新資料庫
這樣就有一個測試用的資料庫可以用了

再來,點選要操作的資料庫,按右鍵選新增查詢,會出現 SQL query 的視窗

輸入以下指令
若不放心,可用反白標示來達到逐條執行;若不反白,則就全部執行
--1..截斷交易記錄
BACKUP LOG db WITH TRUNCATE_ONLY;

--2.顯示資料庫檔案,找出交易記錄檔的邏輯檔名
EXEC sp_helpdb db

--3.壓縮交易記錄檔
USE db
DBCC SHRINKFILE(db_log,1)
不過記錄檔沒有清的想像的多... 100M -> 24M

附註:
  • 依參考資料,將資料庫加上單引號 (ex: 'db") 的作法,會造成 sql query 錯誤;db 是不需要加任何引號的
  • 作還原資料庫後,雖然指定目的地名稱為新的資料庫,但邏輯名稱並不會改變
    ex: 還原資料庫 from a -> b
    從步驟2去看時,b 的 log file 名稱仍然是 a_log.ldf
    在步驟3去做時,一定要先下 use 的作法,可以確保我們不會清錯 log 檔
    (理論上,sql 2005 應該會強制一定要先 use 來選定資料庫... but you'll never know -- 'till you try it )

參考資料:
http://www.dotblogs.com.tw/dotjason/archive/2009/04/20/8064.aspx
http://chen7768.blogspot.com/2009/01/microsoft-sql2000-sql2005-log.html
http://marchlifeshow.blogspot.com/2009/11/ms-sql-log.html

沒有留言: