sqlserver2005刪除log檔案和清空日誌的方案
資料庫在使用過程中會使日誌檔案不斷增加,使得資料庫的效能下降,並且占用大量的磁碟空間。
sql server資料庫都有log檔案,log檔案記錄使用者對資料庫修改的操作。可以通過直接刪除log檔案和清空日誌在清除資料庫日誌。
一、刪除log
1、分離資料庫。分離資料庫之前一定要做好資料庫的全備份,選擇資料庫——右鍵——任務——分離。
勾選刪除連線
分離後在資料庫列表將看不到已分離的資料庫。
2、刪除log檔案
刪除資料庫資訊資訊的ldf檔案:
附加資料庫之後將生成新的日誌檔案log,新的日誌檔案的大小事504k。
也可以通過命令才完成以上的操作:
use master;
execsp_detach_db
@dbname
='testdb'
;
exec二、清空日誌該命令在sql server 2005和2000支援,sql server 2008不支援該命令。sp_attach_single_file_db
@dbname
='testdb'
,@physname
='d:\program files\microsoft sql server\mssql10.sql2008\mssql\data\testdb.mdf'
dump transaction三、收縮資料庫檔案testdb
with
no_log
dbcc四、截斷事務日誌shrinkfile
('testdb_log'
,1)
backup該命令在sql server 2008也是不支援,在sql server 2005和2000可以使用。log
testdb
with
no_log
--sql server 資料庫使用時間一長就會導致log檔案逐漸變的龐大, 想備份一下資料庫, 想發給誰都很困難最好備份日誌,以後可通過日誌恢復資料。。。
以下為日誌處理方法
一般不建議做第4,6兩步
第4步不安全,有可能損壞資料庫或丟失資料
第6步如果日誌達到上限,則以後的資料庫處理會失敗,在清理日誌後才能恢復.
--*/
--下面的所有庫名都指你要處理的資料庫的庫名
1.清空日誌
dump
transaction
庫名 with
no_log
2.截斷事務日誌:
backup
log庫名
with
no_log
3.收縮資料庫檔案(如果不壓縮,資料庫的檔案不會減小
企業管理器
--右鍵你要壓縮的資料庫--所有任務--收縮資料庫--收縮檔案
--選擇日誌檔案--在收縮方式裡選擇收縮至xxm,這裡會給出乙個允許收縮到的最小m數,直接輸入這個數,確定就可以了
--選擇資料檔案--在收縮方式裡選擇收縮至xxm,這裡會給出乙個允許收縮到的最小m數,直接輸入這個數,確定就可以了
也可以用sql語句來完成
--收縮資料庫
dbcc
shrinkdatabase(庫名)
--收縮指定資料檔案,1是檔案號,可以通過這個語句查詢到:select * from sysfiles
dbcc
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 files\microsoft sql server\mssql\data\庫名.mdf
'5.為了以後能自動收縮,做如下設定:
企業管理器
--伺服器--右鍵資料庫--屬性--選項--選擇"自動收縮"
--sql語句設定方式:
exec
sp_dboption '庫名
', 'autoshrink',
'true
'6.如果想以後不讓它日誌增長得太大
企業管理器
--伺服器--右鍵資料庫--屬性--事務日誌
--將檔案增長限制為xm(x是你允許的最大資料檔案大小)
--sql語句的設定方式:
alter
database
庫名 modify
file
(name
=邏輯檔名,maxsize
=20)
執行下面的語句就可以 清到log檔案只剩下1m左右的空間.
dump transaction 資料庫名 with no_log
dbcc shrinkdatabase('資料庫名',truncateonly)
sqlserver的系統日誌過大,就會引起sqlserver伺服器無法啟動等一系列問題。今天我遇到了這個問題,在網上搜尋了一下,解決方法是刪除就 可以了,可是當前的errorlog正在被sql使用無法刪除啊,要刪除只能停止sql伺服器,難道就沒有別得辦法了嗎?
回答是肯定的:使用以下儲存過程:
exec sp_cycle_errorlog
注釋每次啟動
sql server
時,當前錯誤日誌重新命名為
errorlog.1
;errorlog.1
成為errorlog.2
,errorlog.2
成為errorlog.3
,依次類推。
sp_cycle_errorlog
使您得以迴圈錯誤日誌檔案,而不必停止而後再啟動伺服器。
SQLServer 刪除log檔案和清空日誌的方法
資料庫的效能是dba都需要重點關注的,日誌檔案的增多嚴重影響資料庫的效能,本文將為您介紹sql server刪除日誌檔案的方法,供您參考,希望對您有所幫助。資料庫在使用過程中會使日誌檔案不斷增加,使得資料庫的效能下降,並且占用大量的磁碟空間。sql server資料庫都有log檔案,log檔案記錄使...
收縮 刪除SQlserver資料庫的log日誌檔案
use master goalter database ais20141013114943 set recovery with no wait database後為資料庫名 goalter database ais20141013114943 set recovery 簡單模式 gouse ais2...
SQL Server 2008 清空刪除日誌檔案
1 刪除log 1 分離資料庫 企業管理器 伺服器 資料庫 右鍵 分離資料庫 2 刪除log檔案 3 附加資料庫 企業管理器 伺服器 資料庫 右鍵 附加資料庫 此法生成新的log,大小只有520多k 上面的方法盡量不要用!用下面的好用些!先殺下使用者程序 殺程序 use master godecla...