熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> MySQL >> 正文

MSSQL 清空日志 刪除日志文件

2013-11-23 21:06:23  來源: MySQL 

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

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

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

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

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

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

  二sql語句清除mssql日志

DUMP TRANSACTION TestDB WITH NO_LOG 清除日志

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

BACKUP LOG TestDB WITH NO_LOG 截斷事務日志

該命令在SQL Server 也是不支持在SQL Server 可以使用

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

  declare @logfilename varchar()
 declare @datafilename varchar()
select @logfilename=physical_name from sysdatabase_files where type=
select @datafilename=physical_name from sysdatabase_files where type=

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

  use master
exec sp_detach_db @dbname=TestVFA;

  緊接下來就是刪除數據庫 日志文件
Remove file
DECLARE @Result int
DECLARE @FSO_Token int
EXEC @Result = sp_OACreate ScriptingFileSystemObject @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 ;
RECONFIGURE;
exec sp_configure Ole Automation Procedures;
RECONFIGURE;


From:http://tw.wingwit.com/Article/program/MySQL/201311/29584.html
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.