壓縮日志及數據庫文件大小


壓縮日志及數據庫文件大小   
    
    
    
  --下面的所有庫名都指你要處理的數據庫的庫名   
    
  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   FilesMicrosoft   SQL   ServerMSSQLData庫名.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 FilesMicrosoft SQL ServerMSSQLDatapubs.mdf' 
 
5.為了以后能自動收縮,做如下設置: 
企業管理器--服務器--右鍵數據庫--屬性--選項--選擇"自動收縮" 
 
--SQL語句設置方式: 
EXEC sp_dboption '數據庫名', 'autoshrink', 'TRUE' 
 
6.如果想以后不讓它日志增長得太大 
企業管理器--服務器--右鍵數據庫--屬性--事務日志 
--將文件增長限制為xM(x是你允許的最大數據文件大小) 
 
--SQL語句的設置方式: 
alter database 數據庫名 modify file(name=邏輯文件名,maxsize=20) 
 
 
vxfire 2007-08-28 14:19 

我這里.ldf文件比Mdf文件大100G怎么解決啊。,頭痛死啦


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM