数据库瘦身
壓縮日志及數據庫文件大小 ??
? ??
? /*--特別注意 ??
? ??
? 請按步驟進行,未進行前面的步驟,請不要做后面的步驟 ??
? 否則可能損壞你的數據庫. ??
? ??
? ??
? 一般不建議做第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) ??
? ---------------------------------------------------------------------
SQL Server 控制Ldf文件的大小(清理歷史記錄 &設定自動縮小)?
?
*清理歷史記錄?
1. 在SQL Server Enterprice Manager(企業管理器)工具列---進入 SQL Query Analyzer(SQL查詢分析器)?
2. 輸入BACKUP LOG <你的數據庫名稱> WITH TRUNCATE_ONLY?
如: BACKUP LOG myXXDB WITH TRUNCATE_ONLY?
?
2. 回SQL Server Enterprice Manager, 在該數據庫上按右鍵選[所有工作/壓縮數據庫],?
點[文件], 在數據庫文件選擇該 Log文件, 在[壓縮動作]選擇[將文件壓縮為X MB (最小值為Y MB)],?
直接將x改成其建議其最小值y按[確定]即可壓縮.?
先不要離開,再點一次[文件]看看壓了多少, 會發現還可以再壓, 還會變更小喲! 可以壓兩三次.?
?
總結:其實也就是兩個指令就可以完成了?
BACKUP LOG DateBaseName WITH TRUNCATE_ONLY?
DBCC ShrinkDatabase(DateBaseName)?
?
*設定數據庫自動縮小, 默認值為OFF?
方法1.?
ALTER DATABASE <你的數據庫名稱> SET AUTO_SHRINK ON?
如: ALTER DATABASE myXXDB SET AUTO_SHRINK ON?
方法2.?
在數據庫上按右鍵選內容(要等一下下), 點[選項]頁, 勾選[自動壓縮]后按確定?
?
?
SQL SERVER日志清除的兩種方法?
在使用過程中大家經常碰到數據庫日志非常大的情況,在這里介紹了兩種處理方法……?
?
方法一?
?
一般情況下,SQL數據庫的收縮并不能很大程度上減小數據庫大小,其主要作用是收縮日志大小,應當定期進行此操作以免數據庫日志過大?
?
1、設置數據庫模式為簡單模式:打開SQL企業管理器,在控制臺根目錄中依次點開Microsoft SQL Server-->SQL Server組-->雙擊打開你的服務器-->雙擊打開數據庫目錄-->選擇你的數據庫名稱(如論壇數據庫Forum)-->然后點擊右鍵選擇屬性-->選擇選項-->在故障還原的模式中選擇“簡單”,然后按確定保存。?
?
2、在當前數據庫上點右鍵,看所有任務中的收縮數據庫,一般里面的默認設置不用調整,直接點確定。?
?
3、收縮數據庫完成后,建議將您的數據庫屬性重新設置為標準模式,操作方法同第一點,因為日志在一些異常情況下往往是恢復數據庫的重要依據?
?
?
?
?
SQLSERVER中講:?
?
BACKUP LOG 數據庫名 WITH NO_LOG|TRUNCATE_ONLY可以截斷事務日志。?
?
但我在數據庫中進行上述操作后,事務日志還是沒有改變。?
?
?
第一步只是將非活動的事務日志截斷,并沒有收縮數據庫,只有進行第二項操作后,數據庫才進行事務日志的清理工作,將截斷的非活動事務刪除,并將事務日志文件收縮到適當尺寸。?
在使用 SQL Server 時,數據庫里的日志文件會越來越大,需要把它刪除。 我先把這個數據庫分離,在數據庫上點右鍵 -> 所有任務 -> 分離數據庫,分離之后,就可以把 Log 文件刪除,同時也可以把數據進行備份。之后,就可以在所有任務里的附加數據庫再把那個數據庫添進來,SQL Server 會提示 LOG 文件不存在,問你是不是要新建一個,選是就行了,這樣,LOG 文件就清空了。 這個方法只需幾分鐘的時間,但在這幾分鐘里,就不能訪問這個數據庫了,我覺得只適用于小型的應用,對于大型的系統就要找其它方法了。?
?
?
老馬嗖嗖 2007-04-30 13:03?
SQL Server 2000中*.LDF文件是什么作用
?
*.mdf是數據文件 ??
*.ldf是日志文件 ??
當數據庫出現問題時 ??
可用以下語句恢復 ??
數據恢復一 ??
1. 先分離數據庫 ??
exec ? sp_detach_db ? dbname ??
2. 加上數據庫 ??
exec ? sp_attach_db ? @dbname=’dbname’,@filename1=’d:\sql ? server\...\dbname.mdf’,@filename2=’d;\sql ? server\...\dbname_log.ldf’ ??
?
?
老馬嗖嗖 2007-04-30 13:04?
/*--特別注意?
?
請按步驟進行,未進行前面的步驟,請不要做后面的步驟?
否則可能損壞你的數據庫.?
--*/?
?
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 = 'pubs'?
?
b.刪除日志文件?
?
c.再附加?
EXEC sp_attach_single_file_db @dbname = 'pubs',?
@physname = 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs.mdf'?
?
5.為了以后能自動收縮,做如下設置:?
企業管理器--服務器--右鍵數據庫--屬性--選項--選擇"自動收縮"?
?
--SQL語句設置方式:?
EXEC sp_dboption '數據庫名', 'autoshrink', 'TRUE'?
?
6.如果想以后不讓它日志增長得太大?
企業管理器--服務器--右鍵數據庫--屬性--事務日志?
--將文件增長限制為xM(x是你允許的最大數據文件大小)?
?
--SQL語句的設置方式:?
alter database 數據庫名 modify file(name=邏輯文件名,maxsize=20)?
?
總結
- 上一篇: maven jar包瘦身
- 下一篇: mysql 瘦身_Mysql瘦身方法_M