SQL Server清除事務日志的兩種方式
前言
我們在數(shù)據(jù)庫維護的時候,經(jīng)常會查看數(shù)據(jù)庫日志等,但是數(shù)據(jù)庫讀寫量很大的時候,數(shù)據(jù)庫日志文件也會隨之增大,一般情況會設置日志文件最大大小,達到這個大小后,數(shù)據(jù)庫將無法正常操作并記錄日志;當然也有圖方便的直接設置不限大小,但是磁盤容量始終有限制;因此我們需要用數(shù)據(jù)庫代理作業(yè)定期備份清理數(shù)據(jù)庫日志文件,本文列舉兩個清理數(shù)據(jù)庫日志的方式。
接下來就不贅述代理作業(yè)如何設置等,有不懂的朋友可以留言或私信我,我看到會及時回復的。
方法一
此方法通過把日志文件備份到其他文件的方式來達到清理日志源文件的目的,代碼如下:
USE [數(shù)據(jù)庫名]--需要清理日志的數(shù)據(jù)庫名 GO --這里獲取當前時間用來給備份文件命名 declare @dt varchar(20); set @dt=CONVERT(varchar(100), GETDATE(), 23); declare @path varchar(200); --數(shù)據(jù)庫日志文件名稱+日期命名此日志備份文件;此格式可以自己根據(jù)需要隨意 set @path='D:\某文件夾\數(shù)據(jù)庫名_log_' + @dt + '.log'; --設置備份到磁盤的文件路徑 backup log 數(shù)據(jù)庫名 to disk=@path; --開始備份,這里的“數(shù)據(jù)庫名”必須是源文件名稱,在此數(shù)據(jù)庫“屬性”里面查看 GO DBCC SHRINKFILE (N'數(shù)據(jù)庫日志源文件名' , 1, TRUNCATEONLY) --備份完成后收縮數(shù)據(jù)庫日志源文件大小為1M --數(shù)據(jù)庫日志源文件名:一般為‘數(shù)據(jù)庫名_log' 具體在此數(shù)據(jù)庫“屬性”里面查看 GO
注意:以上方法必須在數(shù)據(jù)庫有備份文件之后才可行,未備份的數(shù)據(jù)庫無法實現(xiàn)。
查看數(shù)據(jù)庫是否有備份及日志情況的方法如下:
select log_reuse_wait_desc from sys.databases where name='數(shù)據(jù)庫名'
select type_desc,name from sys.master_files WHERE database_id=db_id('數(shù)據(jù)庫名')
--查詢日志空間
DBCC SQLPERF (LOGSPACE)
方法二
此方法會直接銷毀日志,執(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'數(shù)據(jù)庫名_Log' , 1, TRUNCATEONLY) --設置壓縮后的日志大小為1M,可以自行設定,'數(shù)據(jù)庫名_Log':為數(shù)據(jù)庫日志源文件名 GO USE [master] GO ALTER DATABASE 數(shù)據(jù)庫名 SET RECOVERY FULL WITH NO_WAIT GO ALTER DATABASE 數(shù)據(jù)庫名 SET RECOVERY FULL --還原為完全模式 GO
到此這篇關于SQL Server清除事務日志的兩種方式的文章就介紹到這了,更多相關SQL清除事務日志內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
mssql無數(shù)據(jù)庫日志文件恢復數(shù)據(jù)庫的方法
因各種原因我們需要注意恢復數(shù)據(jù)庫,如果剛好有沒有數(shù)據(jù)庫日志文件,那就不妨用下面的方法2008-09-09
SQL Server Management Studio(SSMS)復制數(shù)據(jù)庫的方法
這篇文章主要為大家詳細介紹了如何利用SQL Server Management Studio復制數(shù)據(jù)庫,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-03-03
SQL Server如何通過創(chuàng)建臨時表遍歷更新數(shù)據(jù)詳解
這篇文章主要給大家介紹了關于SQL Server如何通過創(chuàng)建臨時表遍歷更新數(shù)據(jù)的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-09-09
sqlserver數(shù)據(jù)庫使用存儲過程和dbmail實現(xiàn)定時發(fā)送郵件
這篇文章主要介紹了sqlserver數(shù)據(jù)庫存儲過程和Job實現(xiàn)定時從數(shù)據(jù)庫發(fā)送郵件的功能,大家參考使用吧2014-01-01
經(jīng)常發(fā)現(xiàn)同事爲了更改DB的Collation而刪掉DB,重新創(chuàng)建過。其實,只要一條SQL就可以解,唔使哽麻煩?。?/div> 2009-05-05
SQL Server中聚合歷史備份信息對比數(shù)據(jù)庫增長的方法
這篇文章主要介紹了SQL Server中聚合歷史備份信息對比數(shù)據(jù)庫增長的方法,需要的朋友可以參考下2014-09-09最新評論

