萬盛學電腦網

 萬盛學電腦網 >> 數據庫 >> mssql數據庫 >> SQL SERVER數據庫日志清空圖文教程

SQL SERVER數據庫日志清空圖文教程

數據庫日志不停瘋長,如何進行清空呢?這裡以一台數據庫SQL SERVER 2005為例, 日志文件達到了100多個G一直無法清理,想了很多的辦法:

比如下面這款SqlServer日志清除專家,可用於SQL Server 7、SQL Server 2000、SQL Server 2005的各種版本的數據庫日志的清除。

這個工具一清就可以清干淨的。使您再也不用擔心數據庫日志文件超過幾百兆或上GB級而煩惱。

第二個方法就是采用了一個比較死的辦法。采用 分離,然後再刪除日志文件再附加來生成一個新的日志文件。

切記在操作前先把SQL好好的備份一下。

第一步 當然還是打開企業管理器了

SQL SERVER數據庫日志清空圖文教程 三聯

在分離前最好是先把IIS之類的正在連接數據庫的程序關一下,要不然老半天也分離不了。

也可以選擇一下 刪除鏈接 這樣可能分離會快一點。

我們再定位到數據庫所在的硬盤位置

我們為了保除起見可以把 qq2.mdf備份一份,然後再將 qq2_log.ldf 這個文件重命一下名(200G的文件實在是沒地方可以備份)。

然後我們再來附加數據庫

附加到剛剛那個 mdf的文件。注意看下面會提示 .ldf 文件找不到。

不管他了。選擇 .ldf這一分把他給刪掉。

然後再確定,哈還原成功了。系統自動生成了一個新的 ldf 文件  504KB

建議大家先用上面的那個工具去清一下,如果清不到再用這個死辦法來刪除日志。

最後再次提醒各位一定要注意備份噢!!

SQL2008 的收縮日志 
由於SQL2008對文件和日志管理進行了優化,所以以下語句在SQL2005中可以運行但在SQL2008中已經被取消:
(SQL2005)
Backup Log DNName with no_log
go
dump transaction DNName with no_log
go
USE DNName 
DBCC SHRINKFILE (2)
Go
--------------------------------------------------------------
(SQL2008):
在SQL2008中清除日志就必須在簡單模式下進行,等清除動作完畢再調回到完全模式。
USE [master]
    GO
    ALTER DATABASE DNName SET RECOVERY SIMPLE WITH NO_WAIT
    GO
    ALTER DATABASE DNName SET RECOVERY SIMPLE   --簡單模式
    GO
    USE DNName 
    GO
    DBCC SHRINKFILE (N'DNName_Log' , 11, TRUNCATEONLY)
    GO
    USE [master]
    GO

    ALTER DATABASE DNName SET RECOVERY FULL WITH NO_WAIT

    GO

    ALTER DATABASE DNName SET RECOVERY FULL  --還原為完全模式

    GO

優點:此清除日志所運行消耗的時間短,90GB的日志在分鐘左右即可清除完畢,做完之後做個完全備份在分鐘內
即可完成。
缺點: 不過此動作最好不要經常使用,因為它的運行會帶來系統碎片。普通狀態下LOG和DIFF的備份即可截斷日志。
此語句使用的恰當環境:當系統的日志文件異常增大或者備份LOG時間太長可能影響生產的情況下使用。

copyright © 萬盛學電腦網 all rights reserved