日志清理
在使用SQL Server的過程中艇潭,隨著時(shí)間的變化拼窥,后臺(tái)日志文件的體量也是在不斷增加的。這樣會(huì)使得數(shù)據(jù)庫的性能下降蹋凝,并且占用大量的磁盤空間鲁纠。
而在我們?nèi)粘_\(yùn)維過程中,偶爾會(huì)遇到數(shù)據(jù)庫執(zhí)行JOB的時(shí)候鳍寂,報(bào)內(nèi)存不足的錯(cuò)誤改含,導(dǎo)致JOB無法正常運(yùn)行,為了解決這一問題迄汛,就需要我們定期對數(shù)據(jù)庫的日志進(jìn)行清理捍壤。
使用實(shí)例
案例數(shù)據(jù):
在白茶本機(jī)的數(shù)據(jù)庫中,存在名為“CaseData”的數(shù)據(jù)庫鞍爱。
查看JOB信息:
我們可以通過查看數(shù)據(jù)庫的屬性鹃觉,來查看Log的名稱和存放位置。
當(dāng)然睹逃,我們也可以通過執(zhí)行下面的語句盗扇,來查看日志文件的相關(guān)信息。
USE CaseData --數(shù)據(jù)庫名稱沉填,可更改
GO
SELECT file_id, name,size,* FROM sys.database_files;
結(jié)果如下:
JOB清理:
接下來粱玲,我們就可以對日志進(jìn)行清理了。處理日志的方式有很多拜轨,比如手動(dòng)刪除抽减、截?cái)嗟鹊龋@里白茶比較推薦的方式是將日志文件進(jìn)行壓縮橄碾。畢竟卵沉,日志文件中記錄著對數(shù)據(jù)庫所執(zhí)行的操作颠锉,有時(shí)候我們需要查看日志文件進(jìn)行操作復(fù)盤的。
執(zhí)行以下代碼:
USE master
GO
ALTER DATABASE 數(shù)據(jù)庫名稱 SET RECOVERY SIMPLE WITH NO_WAIT
GO
ALTER DATABASE 數(shù)據(jù)庫名稱 SET RECOVERY SIMPLE --簡單模式
GO
USE 數(shù)據(jù)庫名稱
GO
DBCC SHRINKFILE (N'日志文件' , 2, TRUNCATEONLY)
GO
USE master
GO
ALTER DATABASE 數(shù)據(jù)庫名稱 SET RECOVERY FULL WITH NO_WAIT
GO
ALTER DATABASE 數(shù)據(jù)庫名稱 SET RECOVERY FULL --還原為完全模式
結(jié)果如下:
清理完成后史汗,我們可以再回去查看日志信息琼掠,會(huì)發(fā)現(xiàn)Size變小,這樣就完成了日志的清理過程停撞。
定時(shí)清理任務(wù):
當(dāng)然瓷蛙,我們也可以通過JOB的方式,設(shè)置定時(shí)的清理任務(wù)戈毒。
點(diǎn)開JOB的目錄艰猬,選擇新建JOB。
對JOB進(jìn)行命名埋市。
點(diǎn)開Steps冠桃,添加執(zhí)行步驟,選擇添加SQL語句道宅。
點(diǎn)開Schedule食听,設(shè)定JOB定時(shí)。
點(diǎn)擊OK污茵,保存即可樱报,這樣就完成數(shù)據(jù)庫日志的自動(dòng)清理了,當(dāng)然泞当,我們也可以選擇立即執(zhí)行肃弟,查看一下JOB是否能夠正常運(yùn)行。
這里是白茶零蓉,一個(gè)PowerBI的初學(xué)者。