SQL Server資料庫都有log檔案,log檔案記錄使用者對資料庫修改的操作。可以通過直接刪除log檔案和清空日誌在清除資料庫日誌
使用MS資料庫的朋友就會知道一個問題,C盤的空間很容易被佔滿了。因為本來系統硬碟就分區比較小,這是由於資料庫在使用過程中會使記錄檔不斷增 加,使得資料庫的效能下降,並且佔用大量的磁碟空間。SQL Server資料庫都有log檔案,log檔案記錄使用者對資料庫修改的操作。可以通過直接刪 除log檔案和清空日誌在清除資料庫日誌。
一、刪除LOG
1、分離資料庫。分離資料庫之前一定要做好資料庫的全備份,選擇資料庫——右鍵——任務——分離。
勾選刪除串連
分離後在資料庫列表將看不到已分離的資料庫。
2、刪除LOG檔案
3、附加資料庫,附加的時候會提醒找不到log檔案。
刪除資料庫資訊資訊的ldf檔案:
附加資料庫之後將產生新的記錄檔log,新的記錄檔的大小事504K。
也可以通過命令才完成以上的操作:
use master;
exec sp_detach_db @dbname='TestDB';
exec sp_attach_single_file_db @dbname='TestDB',@physname='D:Program FilesMicrosoft SQL ServerMSSQL10.SQL2008MSSQLDATATestDB.mdf'
二、清空日誌
該命令在SQL Server 2005和2000支援,SQL Server 2008不支援該命令。
DUMP TRANSACTION TestDB WITH NO_LOG
三、收縮資料庫檔案
DBCC SHRINKFILE ('TestDB_log',1)
四、截斷交易記錄
BACKUP LOG TestDB WITH NO_LOG
該命令在SQL Server 2008也是不支援,在SQL Server 2005和2000可以使用。
清除SQLServer2005的LOG檔案
--最好備份日誌,以後可通過日誌恢複資料。。。以下為Tlog方法一般不建議做第4,6兩步第4步不安全,有可能損壞資料庫或遺失資料第6步如果日誌達到上限,則以後的資料庫處理會失敗,在清理日誌後才能恢複.--*/--下面的所有庫名都指你要處理的資料庫的庫名1.清空日誌DUMP TRANSACTION 庫名 WITH NO_LOG2.截斷交易記錄:BACKUP LOG 庫名 WITH NO_LOG3.收縮資料庫檔案(如果不壓縮,資料庫的檔案不會減小企業管理器--右鍵你要壓縮的資料庫--所有任務--收縮資料庫--收縮檔案--選擇記錄檔--在收縮方式裡選擇收縮至XXM,這裡會給出一個允許收縮到的最小M數,直接輸入這個數,確定就可以了--選擇資料檔案--在收縮方式裡選擇收縮至XXM,這裡會給出一個允許收縮到的最小M數,直接輸入這個數,確定就可以了也可以用SQL語句來完成 --收縮資料庫DBCC SHRINKDATABASE(庫名)--收縮指定資料檔案,1是檔案號,可以通過這個語句查詢到:select * from sysfilesDBCC SHRINKFILE(1)4.為了最大化的縮小記錄檔(如果是sql 7.0,這步只能在查詢分析器中進行)a.分離資料庫:企業管理器--伺服器--資料庫--右鍵--分離資料庫b.在我的電腦中刪除LOG檔案c.附加資料庫:企業管理器--伺服器--資料庫--右鍵--附加資料庫此法將產生新的LOG,大小隻有500多K或用代碼: 下面的樣本分離 pubs,然後將 pubs 中的一個檔案附加到當前伺服器。a.分離EXEC sp_detach_db @dbname = '庫名'b.刪除記錄檔c.再附加EXEC sp_attach_single_file_db @dbname = '庫名', @physname = 'c:Program FilesMicrosoft SQL ServerMSSQLData庫名.mdf'5.為了以後能自動收縮,做如下設定:企業管理器--伺服器--右鍵資料庫--屬性--選項--選擇"自動收縮"--SQL語句設定方式:EXEC sp_dboption '庫名', 'autoshrink', 'TRUE'6.如果想以後不讓它日誌增長得太大企業管理器--伺服器--右鍵資料庫--屬性--交易記錄--將檔案增長限制為xM(x是你允許的最大資料檔案大小)--SQL語句的設定方式:alter database 庫名 modify file(name=邏輯檔案名稱,maxsize=20)
SQL Server 資料庫使用時間一長就會導致Log檔案逐漸層的龐大, 想備份一下資料庫, 想發給誰都很困難
運行下面的語句就可以 清到Log檔案只剩下1M左右的空間.
DUMP TRANSACTION 資料庫名 WITH NO_LOG
DBCC SHRINKDATABASE('資料庫名',TRUNCATEONLY)
不重啟SQL服務,刪除SQLServer系統日誌
SQLServer的系統日誌過大,就會引起SQLServer伺服器無法啟動等一系列問題。今天我遇到了這個問題,在網上搜尋了一下,解
決方法 是刪除就 可以了,可是當前的ErrorLog正在被SQL使用無法刪除啊,要刪除只能停止SQL伺服器,難道就沒有別得辦法了嗎?
回答是肯定的:使用以下預存程序:EXEC sp_cycle_errorlog
注釋
每次啟動 SQL Server 時,當前錯誤記錄檔重新命名為 errorlog.1;errorlog.1 成為 errorlog.2,errorlog.2 成為 errorlog.3,依次類推。sp_cycle_errorlog 使您得以迴圈錯誤記錄檔檔案,而不必停止而後再啟動伺服器。