一、簡(jiǎn)單方法
–SQL Server收縮方法
1、右鍵數(shù)據(jù)庫(kù)→屬性→選項(xiàng)→故障還原模型→設(shè)為簡(jiǎn)單→確定;
2、右鍵數(shù)據(jù)庫(kù)→所有任務(wù)→收縮數(shù)據(jù)庫(kù)→確定;
3、右鍵數(shù)據(jù)庫(kù)→屬性→選項(xiàng)→故障還原模型→設(shè)為大容量日志記錄→確定。
二、復(fù)雜方法
–SQL Server日志清空方法
在查詢分析器中順序執(zhí)行以下三步,其中 databasename 為你的數(shù)據(jù)庫(kù)文件名
1.清空日志:DUMP TRANSACTION databasename WITH NO_LOG
2.截?cái)嗍聞?wù)日志:BACKUP LOG databasename WITH NO_LOG
3.收縮數(shù)據(jù)庫(kù):DBCC SHRINKDATABASE(databasename)
(BACKUP LOG databasename WITH NO_LOG|TRUNCATE_ONLY可以截?cái)嗍聞?wù)日志。
第一步只是將非活動(dòng)的事務(wù)日志截?cái)?,并沒(méi)有收縮數(shù)據(jù)庫(kù),只有進(jìn)行第二項(xiàng)操作后,數(shù)據(jù)庫(kù)才進(jìn)行事務(wù)日志的清理工作,將截?cái)嗟姆腔顒?dòng)事務(wù)刪除,并將事務(wù)日志文件收縮到適當(dāng)尺寸。)
3、收縮數(shù)據(jù)庫(kù)文件(如果不壓縮,數(shù)據(jù)庫(kù)的文件不會(huì)減小)
企業(yè)管理器–右鍵你要壓縮的數(shù)據(jù)庫(kù)–所有任務(wù)–收縮數(shù)據(jù)庫(kù)–收縮文件–選擇日志文件–在收縮方式里選擇收縮至XXM,這里會(huì)給出一個(gè)允許收縮到的最小M數(shù),直接輸入這個(gè)數(shù),確定就可以了
–選擇數(shù)據(jù)文件–在收縮方式里選擇收縮至XXM,這里會(huì)給出一個(gè)允許收縮到的最小M數(shù),直接輸入這個(gè)數(shù),確定就可以了。
收縮數(shù)據(jù)庫(kù)完成后,建議將您的數(shù)據(jù)庫(kù)屬性重新設(shè)置為標(biāo)準(zhǔn)模式,操作方法同簡(jiǎn)單方法里第一點(diǎn),因?yàn)槿罩驹谝恍┊惓G闆r下往往是恢復(fù)數(shù)據(jù)庫(kù)的重要依據(jù)
也可以用SQL語(yǔ)句來(lái)完成
–收縮數(shù)據(jù)庫(kù)
DBCC SHRINKDATABASE(數(shù)據(jù)庫(kù)名)
–收縮指定數(shù)據(jù)文件,1是文件號(hào),可以通過(guò)這個(gè)語(yǔ)句查詢到:
select * from sysfiles DBCC SHRINKFILE(1)
4、為了最大化的縮小日志文件(如果是sql 7.0,這步只能在查詢分析器中進(jìn)行)
在使用 SQL Server 時(shí),數(shù)據(jù)庫(kù)里的日志文件會(huì)越來(lái)越大,需要把它刪除。 我先把這個(gè)數(shù)據(jù)庫(kù)分離,在數(shù)據(jù)庫(kù)上點(diǎn)右鍵 -> 所有任務(wù) -> 分離數(shù)據(jù)庫(kù),分離之后,就可以把 Log 文件刪除,同時(shí)也可以把數(shù)據(jù)進(jìn)行備份。之后,就可以在所有任務(wù)里的附加數(shù)據(jù)庫(kù)再把那個(gè)數(shù)據(jù)庫(kù)添進(jìn)來(lái),SQL Server 會(huì)提示 LOG 文件不存在,問(wèn)你是不是要新建一個(gè),選是就行了,這樣,LOG 文件就清空了。 這個(gè)方法只需幾分鐘的時(shí)間,但在這幾分鐘里,就不能訪問(wèn)這個(gè)數(shù)據(jù)庫(kù)了,我覺(jué)得只適用于小型的應(yīng)用,對(duì)于大型的系統(tǒng)就要找其它方法了。)
a.分離數(shù)據(jù)庫(kù)
企業(yè)管理器–服務(wù)器–數(shù)據(jù)庫(kù)–右鍵–分離數(shù)據(jù)庫(kù)
b.在我的電腦中刪除LOG文件
c.附加數(shù)據(jù)庫(kù)
企業(yè)管理器–服務(wù)器–數(shù)據(jù)庫(kù)–右鍵–附加數(shù)據(jù)庫(kù)
此法將生成新的LOG,大小只有500多K
或用代碼:
下面的示例分離 pubs,然后將 pubs 中的一個(gè)文件附加到當(dāng)前服務(wù)器。
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、為了以后能自動(dòng)收縮,做如下設(shè)置
企業(yè)管理器–服務(wù)器–右鍵數(shù)據(jù)庫(kù)–屬性–選項(xiàng)–選擇”自動(dòng)收縮”
–SQL語(yǔ)句設(shè)置方式:
EXEC sp_dboption ‘?dāng)?shù)據(jù)庫(kù)名’, ‘a(chǎn)utoshrink’, ‘TRUE’
或
ALTER DATABASE <你的數(shù)據(jù)庫(kù)名稱> SET AUTO_SHRINK ON
如: ALTER DATABASE myXXDB SET AUTO_SHRINK ON
6、如果想以后不讓它日志增長(zhǎng)得太大
企業(yè)管理器–服務(wù)器–右鍵數(shù)據(jù)庫(kù)–屬性–事務(wù)日志
–將文件增長(zhǎng)限制為xM(x是你允許的最大數(shù)據(jù)文件大小)
–SQL語(yǔ)句的設(shè)置方式:
alter database 數(shù)據(jù)庫(kù)名 modify file(name=邏輯文件名,maxsize=20)
特別注意:
請(qǐng)按步驟進(jìn)行,未進(jìn)行前面的步驟,請(qǐng)不要做后面的步驟,否則可能損壞你的數(shù)據(jù)庫(kù)。
一般不建議做第4、6兩步,第4步不安全,有可能損壞數(shù)據(jù)庫(kù)或丟失數(shù)據(jù),第6步如果日志達(dá)到上限,則以后的數(shù)據(jù)
庫(kù)處理會(huì)失敗,在清理日志后才能恢復(fù)。
|