SQL 收縮數據庫日志的幾種辦法 (2005與2008 略有區別)


在SQL Server 2000/2005中可以快速壓縮日志log文件,通過SQL,

方法一:

---DBTEST 為數據庫名,順序最好別亂。注意要先截斷再清空,最后收縮!

backup log DBTEST with no_log  --截斷事務日志

dump transaction DBTEST with no_log  --清空日志

DBCC shrinkdatabasse ('DBTEST',TRUNCATEONLY) 收縮數據庫和日志庫


另有只收縮日志文件,語句如下 

DBCC shrinkfile ('DBTEST_Log',1)--收縮日志文件 

DBCC shrinkfile (N'DBTEST_Log' , 0, TRUNCATEONLY) --收縮日志文件


執行以上語句可以快速壓縮日志文件到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 2008 已經不再支持 DUMP TRANSACTIONBACKUP LOG WITH NO_LOG詳情請看
  http://msdn.microsoft.com/zh-cn/library/ms187315%28SQL.90%29.aspx
  http://msdn.microsoft.com/zh-cn/library/ms186865.aspx 

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

無效。

 

嘗試方法三:  

代碼

use DB_NAME
sp_dboption 
DB_NAME, "trunc. log on chkpt.", true
checkpoint
sp_dboption 
DB_NAME, "autoshrink", true 

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

有沒有更快的方法呢?

嘗試方法四:(請提前備份文件!!)

1. Detach數據庫。
2.刪除log文件。
3. 附加數據庫,選移除log文件,此時SQL Server 會自動重新建立一個512K 的Log 文件。

附圖:




方法五(沒有試過,請提前備份文件!!):

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

先設置恢復模式為“簡單恢復”模式,再收縮:

復制代碼

USE BigData ;
GO
ALTER DATABASE BigData
SET RECOVERY SIMPLE;--設置簡單恢復模式
GO
DBCC SHRINKFILE (BigData_Log, 1);
GO
ALTER DATABASE BigData
SET RECOVERY FULL;--恢復為原模式
GO 

復制代碼

 方法七: (塵塵提供)

 

復制代碼

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

復制代碼

文章出自

http://www.cnblogs.com/downmoon/archive/2009/12/13/1623004.html。


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com