SQL Server清除事務(wù)日志的兩種方式
前言
我們?cè)跀?shù)據(jù)庫(kù)維護(hù)的時(shí)候,經(jīng)常會(huì)查看數(shù)據(jù)庫(kù)日志等,但是數(shù)據(jù)庫(kù)讀寫量很大的時(shí)候,數(shù)據(jù)庫(kù)日志文件也會(huì)隨之增大,一般情況會(huì)設(shè)置日志文件最大大小,達(dá)到這個(gè)大小后,數(shù)據(jù)庫(kù)將無法正常操作并記錄日志;當(dāng)然也有圖方便的直接設(shè)置不限大小,但是磁盤容量始終有限制;因此我們需要用數(shù)據(jù)庫(kù)代理作業(yè)定期備份清理數(shù)據(jù)庫(kù)日志文件,本文列舉兩個(gè)清理數(shù)據(jù)庫(kù)日志的方式。
接下來就不贅述代理作業(yè)如何設(shè)置等,有不懂的朋友可以留言或私信我,我看到會(huì)及時(shí)回復(fù)的。
方法一
此方法通過把日志文件備份到其他文件的方式來達(dá)到清理日志源文件的目的,代碼如下:
USE [數(shù)據(jù)庫(kù)名]--需要清理日志的數(shù)據(jù)庫(kù)名 GO --這里獲取當(dāng)前時(shí)間用來給備份文件命名 declare @dt varchar(20); set @dt=CONVERT(varchar(100), GETDATE(), 23); declare @path varchar(200); --數(shù)據(jù)庫(kù)日志文件名稱+日期命名此日志備份文件;此格式可以自己根據(jù)需要隨意 set @path='D:\某文件夾\數(shù)據(jù)庫(kù)名_log_' + @dt + '.log'; --設(shè)置備份到磁盤的文件路徑 backup log 數(shù)據(jù)庫(kù)名 to disk=@path; --開始備份,這里的“數(shù)據(jù)庫(kù)名”必須是源文件名稱,在此數(shù)據(jù)庫(kù)“屬性”里面查看 GO DBCC SHRINKFILE (N'數(shù)據(jù)庫(kù)日志源文件名' , 1, TRUNCATEONLY) --備份完成后收縮數(shù)據(jù)庫(kù)日志源文件大小為1M --數(shù)據(jù)庫(kù)日志源文件名:一般為‘?dāng)?shù)據(jù)庫(kù)名_log' 具體在此數(shù)據(jù)庫(kù)“屬性”里面查看 GO
注意:以上方法必須在數(shù)據(jù)庫(kù)有備份文件之后才可行,未備份的數(shù)據(jù)庫(kù)無法實(shí)現(xiàn)。
查看數(shù)據(jù)庫(kù)是否有備份及日志情況的方法如下:
select log_reuse_wait_desc from sys.databases where name='數(shù)據(jù)庫(kù)名' select type_desc,name from sys.master_files WHERE database_id=db_id('數(shù)據(jù)庫(kù)名') --查詢?nèi)罩究臻g DBCC SQLPERF (LOGSPACE)
方法二
此方法會(huì)直接銷毀日志,執(zhí)行后無法查看歷史日志記錄,自行酌情使用。
代碼如下:
USE [master] GO ALTER DATABASE 數(shù)據(jù)庫(kù)名 SET RECOVERY SIMPLE WITH NO_WAIT GO ALTER DATABASE 數(shù)據(jù)庫(kù)名 SET RECOVERY SIMPLE --改為簡(jiǎn)單模式 GO USE 數(shù)據(jù)庫(kù)名 GO DBCC SHRINKFILE (N'數(shù)據(jù)庫(kù)名_Log' , 1, TRUNCATEONLY) --設(shè)置壓縮后的日志大小為1M,可以自行設(shè)定,'數(shù)據(jù)庫(kù)名_Log':為數(shù)據(jù)庫(kù)日志源文件名 GO USE [master] GO ALTER DATABASE 數(shù)據(jù)庫(kù)名 SET RECOVERY FULL WITH NO_WAIT GO ALTER DATABASE 數(shù)據(jù)庫(kù)名 SET RECOVERY FULL --還原為完全模式 GO
到此這篇關(guān)于SQL Server清除事務(wù)日志的兩種方式的文章就介紹到這了,更多相關(guān)SQL清除事務(wù)日志內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
關(guān)于存儲(chǔ)過程的編寫的一些體會(huì)
下面我來介紹下存儲(chǔ)過程的編寫數(shù)據(jù)庫(kù)存儲(chǔ)過程的實(shí)質(zhì)就是部署在數(shù)據(jù)庫(kù)端的一組定義代碼以及SQL2010-09-09sum(case when then)(判斷男女生的個(gè)數(shù))
判斷類似一個(gè)班級(jí)的男生和女生的人數(shù)使用sum (cese when then)示例代碼如下,感興趣的朋友可以參考下2013-09-09SQL中遇到多條相同內(nèi)容只取一條的最簡(jiǎn)單實(shí)現(xiàn)方法
本文主要介紹SQL中遇到多條相同內(nèi)容只取一條的最簡(jiǎn)單實(shí)現(xiàn)方法,比較實(shí)用,希望能給大家做一個(gè)參考。2016-06-06