MSSQL精確清理LOG是刪除MSSQL數(shù)據(jù)庫(kù)的事務(wù)日志文件的一種快速有效的方法。已經(jīng)使用的事務(wù)日志文件會(huì)占用很大的空間,如果不及時(shí)清理,會(huì)占據(jù)非常大的空間,所以MSSQL精確清理LOG很重要。下面介紹簡(jiǎn)要的MSSQL精確清理LOG的步驟:
**1. 在執(zhí)行清理之前,先備份數(shù)據(jù)庫(kù)**
最重要的一步是備份現(xiàn)有的數(shù)據(jù)庫(kù)以防止出現(xiàn)意外。清理事務(wù)日志時(shí)需要用到兩個(gè)備份:FULL與LOG。FULL用于備份整個(gè)數(shù)據(jù)庫(kù),LOG用于備份當(dāng)前事務(wù)日志中的所有事務(wù)。
“`sql
BACKUP DATABASE dbname TO DISK=’C:backup.bak’ WITH FORMAT, INIT;
GO
BACKUP LOG dbname TO DISK=’C:backup.trn’ WITH FORMAT, INIT;
GO
**2. 執(zhí)行DBCC SHRINKFILE**
使用DBCC SHRINKFILE可以精確清理LOG文件。通過(guò)指定表空間id和文件id來(lái)進(jìn)行指定文件的清理,清理的文件用Truncate_only參數(shù)來(lái)指定,這里必須要保證當(dāng)前的LOG文件不會(huì)被重新生成,只有在這種情況下才能夠執(zhí)行DBCC SHRINKFILE,以精確清理LOG文件。
```sqlDBCC SHRINKFILE(dbname_LOG, Truncate_only)
GO
**3. 檢查文件是否被清理**
使用CHECKPOINT來(lái)檢查文件是否被清理,檢查方法是執(zhí)行完CHECKPOINT命令后,查看MSSQL的實(shí)例,看看在日志文件的總體使用量中,是否有文件被刪除空間。
“`sql
CHECKPOINT
GO
**4. 日志復(fù)制到另一實(shí)例**
開(kāi)發(fā)測(cè)試時(shí)時(shí)常常需要從日志文件復(fù)制到另一實(shí)例,為了安全起見(jiàn),必須要采用備份進(jìn)行復(fù)制,首先,要在要復(fù)制到實(shí)例上執(zhí)行RESTORE LOG 命令。
```sqlRESTORE LOG dbname FROM DISK='C:backup.trn' WITH REPLACE, NOUNLOAD;
GO
本文簡(jiǎn)要介紹了MSSQL精確清理LOG的方法,步驟是在清理之前備份數(shù)據(jù)庫(kù),執(zhí)行DBCC SHRINKFILE,檢查是否有文件被清理,并且把日志文件復(fù)制到另一實(shí)例,以便進(jìn)行開(kāi)發(fā)測(cè)試。必須采用備份進(jìn)行復(fù)制,以確保安全性。MSSQL精確清理LOG是快速、安全、有效的清理事務(wù)日志文件的方法,建議在使用MSSQL數(shù)據(jù)庫(kù)時(shí)定期執(zhí)行清理,以避免空間被日志文件占用。