壓縮日志及數據庫文件大小
--下面的所有庫名都指你要處理的數據庫的庫名
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怎么解決啊。,頭痛死啦
