1. 程式人生 > >sqlserver 壓縮日誌log

sqlserver 壓縮日誌log

SQL Server 2000/2005中可以快速壓縮日誌log檔案,通過SQL,

方法一:

--BigData為資料庫名DUMPTRANSACTION BigData WITH NO_LOG
BACKUPLOG BigData WITH NO_LOG
DBCC SHRINKDATABASE(BigData )

執行以上語句可以快速壓縮日誌檔案到1M

但是以上語句中前兩行在SQL Server 2008下無法執行

第一行提示“Incorrect syntax near the keyword 'TRANSACTION'.”

第二行提示“One or more of the options (no_log) are not supported for this statement. Review the documentation for supported options. ”

第三行可以執行。但日誌log檔案沒有任何變化。

sql Server 2005說明中明確:包含 DUMP語句是為了向後相容。而後續版本的 Microsoft SQL Server將刪除該功能。請避免在新的開發工作中使用該功能,並著手修改當前還在使用該功能的應用程式。使用 BACKUP

SQL Server 2008說明:BACKUP LOG WITH NO_LOG WITH TRUNCATE_ONLY選項已廢止。使用完整恢復模式或大容量日誌恢復模式時,如果必須刪除資料庫中的日誌備份鏈,請切換至簡單恢復模式。有關詳細資訊,請參閱有關從完整恢復模式或大容量日誌恢復模式切換的注意事項。

嘗試方法二:

----Logical Files :
--CMS1.5_Data
--CMS1.5_Log
DBCC SHRINKFILE (N'CMS1.5_Log' , 1)
GO

無效。

嘗試方法三:

程式碼

useDB_NAME
sp_dboption 
DB_NAME, "trunc. logon chkpt.", true
checkpoint
sp_dboption 
DB_NAME, "autoshrink", true

每一行指令請單獨執行。其中的DB_NAME是指Database Name,在下完語法後的數小時至數十小時,該LOG檔會逐漸釋放空間,最後大約都會維持在數1024KB左右

有沒有更快的方法呢?

嘗試方法四:(請提前備份檔案!!)

1. Detach資料庫。
2.
刪除log檔案。
3.
附加資料庫,選移除log檔案,此時SQL Server會自動重新建立一個512KLog 檔案。

附圖:

方法五(沒有試試,請提前備份檔案!!):

 1.
停止 SQL Server的服務
 2.
使用刪除 Log檔案
 3.
重新啟動SQL Server服務,此時SQL Server會自動重新建立一個1MBLog檔案。方法六: (塵塵提供)

先設定恢復模式為簡單恢復模式,再收縮:

USE BigData ;
GOALTERDATABASE BigData
SET RECOVERY SIMPLE;--設定簡單恢復模式GODBCC SHRINKFILE (BigData_Log, 1);
GOALTERDATABASE BigData
SET RECOVERY FULL;--恢復為原模式GO

方法七:(塵塵提供)

USE BigData;
GOBACKUPLOG DATABASENAME TODISK='d:\test.bak'-- Shrink the truncated log file to 1 MB.
DBCC SHRINKFILE (Bigdata_Log, 1);
GO