程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> SQL2008如何壓縮日志(log)文件?

SQL2008如何壓縮日志(log)文件?

編輯:關於SqlServer

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

  方法一:
 

--BigData為數據庫名
DUMP TRANSACTION BigData WITH NO_LOG
BACKUP LOG BigData WITH NO_LOG
DBCC SHRINKDATABASE(BigData )

  執行以上語句可以快速壓縮日志文件到1M。
 

  但是以上語句中前兩行在SQL 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 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 

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

  SQL2008說明: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 文件。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved