由於SQL2008對檔案和日誌管理進行了最佳化,所以在SQL2000和2005中可以啟動並執行如下命令,但在SQL2008中不支援no_log清空日誌。
1.清空日誌
| 代碼如下 |
複製代碼 |
DUMP TRANSACTION 庫名 WITH NO_LOG |
2.截斷交易記錄:
| 代碼如下 |
複製代碼 |
BACKUP LOG 庫名 WITH NO_LOG |
SQL 2008收縮清空日誌方法:
1.在SQL2008中清除日誌就必須在簡單模式下進行,等清除動作完畢再調回到完整模式,一定必務要再改回完整模式,不然資料庫就不支援時間點備份了。
1).選擇資料庫–屬性—選項—復原模式–選擇簡單。
2).收縮資料庫後,再調回完整。
2.可以用命令直接操作
:
清空日誌
| 代碼如下 |
複製代碼 |
-- set the database SIMPLE model. ALTER DATABASE 資料庫庫名稱 SET RECOVERY SIMPLE; GO --Shrink the truncated log file to 2M DBCC SHRINKFILE (日誌名稱, 2); GO -- Reset the database recovery model. ALTER DATABASE 庫名稱 SET RECOVERY FULL; GO |
在當前資料庫下:
select fileid,groupid,name from sysfiles where groupid=0
得到以下結果:
fileid groupid name
2 0 test123_log
其中fileid為記錄檔ID,name為日記名稱test123_log
在SQL2008中清除日誌就必須在簡單模式下進行,等清除動作完畢再調回到完全模式。
方案一:完全命令模式
| 代碼如下 |
複製代碼 |
USE[master] GO ALTERDATABASE DNName SET RECOVERY SIMPLE WITH NO_WAIT GO ALTERDATABASE DNName SET RECOVERY SIMPLE --簡單模式 GO USE DNName GO DBCC SHRINKFILE (N'DNName_Log' , 11, TRUNCATEONLY) GO USE[master] GO ALTERDATABASE DNName SET RECOVERY FULLWITH NO_WAIT GO ALTERDATABASE DNName SET RECOVERY FULL --還原為完全模式 GO |
方案二:部分命令模式 + 任務-收縮-檔案(單個資料庫)
| 代碼如下 |
複製代碼 |
ALTERDATABASE DNName SET RECOVERY SIMPLE --簡單模式 GO |
右鍵-任務-收縮-檔案-確定 下來資料庫的日誌只保留了1M
ALTERDATABASE DNName SET RECOVERY FULL --還原為完全模式
GO
優點:此清除日誌所運行消耗的時間短,90GB的日誌在分鐘左右即可清除完畢,做完之後做個完全備份在分鐘內
即可完成。