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

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

編輯:關於SqlServer

    數據庫日志不停瘋長,如何進行清空呢?這裡以一台數據庫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時間太長可能影響生產的情況下使用。

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