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

MSSQL清空日志刪除日志文件

編輯:關於MYSQL數據庫

       最近的項目主要做數據的歸檔,把數據從一個數據庫拉到另一個數據庫,造成新數據庫的日志文件非常大;或者數據庫在使用過程中會使日志文件不斷增加,使得數據庫的性能下降,並且占用大量的磁盤空間。於是想把日志文件刪除。最簡單就是先分離數據庫-》刪除日志文件-》最後附加數據,我這裡需要在SSIS中調用,所以已sql腳本為主。

      兩種簡單的清除日志的方法:

      一分離附加法:

      1、首先把數據庫分離,分離數據庫之前一定要做好數據庫的全備份,選擇數據庫——右鍵——任務——分離,其中藥勾選刪除連接!

      分離後在數據庫列表將看不到已分離的數據庫。

      2、刪除數據庫的LOG文件數據庫文件夾下的對應數據庫的 ldf文件

      3、附加數據庫,附加的時候會提醒找不到log文件。到時附加上後會自動創建一個新的日志文件,從而達到清理數據庫的目的

      二、sql語句清除mssql日志

      DUMP TRANSACTION TestDB WITH NO_LOG 清除日志

      DBCC SHRINKFILE ('TestDB_log',1) 收縮數據庫文件

      BACKUP LOG TestDB WITH NO_LOG 截斷事務日志

      該命令在SQL Server 2008也是不支持,在SQL Server 2005和2000可以使用。

      首先我們需要獲取數據庫文件的路徑:

      declare @logfilename varchar(100)

      declare @datafilename varchar(100)

      select @logfilename=physical_name from sys.database_files where type=1

      select @datafilename=physical_name from sys.database_files where type=0

      然後切換到master下,分離數據庫

      use master

      exec sp_detach_db @dbname='TestVFA';

      緊接下來就是刪除數據庫 日志文件

      ----Remove file

      DECLARE @Result int

      DECLARE @FSO_Token int

      EXEC @Result = sp_OACreate 'Scripting.FileSystemObject', @FSO_Token OUTPUT

      EXEC @Result = sp_OAMethod @FSO_Token, 'DeleteFile', NULL, @logfilename

      EXEC @Result = sp_OADestroy @FSO_Token

      最後就是附加數據庫

      exec sp_attach_single_file_db @dbname='TestVFA',@physname=@datafilename

      注意:默認Ole Automation Procedures 是禁用的我們需要啟用它

      exec sp_configure 'show advanced options', 1;

      RECONFIGURE;

      exec sp_configure 'Ole Automation Procedures',1;

      RECONFIGURE;

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