利用SQL Server代理服務(wù)-定時清理SQL Server數(shù)據(jù)庫日志文件
[重要通告]如您遇疑難雜癥,本站支持知識付費業(yè)務(wù),掃右邊二維碼加博主微信,可節(jié)省您寶貴時間哦!
說到清理SQL Server數(shù)據(jù)庫日志文件,這件事兒可大可小,有的客戶安裝的是簡版的sql,再使用的時候最大2GB的日志文件+數(shù)據(jù)文件,超過了就不啟動或者報錯,甚至數(shù)據(jù)也不能寫入,很尷尬,完整版的,在沒設(shè)置無限大的時候,也就是4GB,其實這東西也占盤不是,沒啥用處,還得定時清理才是王道!
利用SQL Server代理服務(wù)-定時清理SQL Server數(shù)據(jù)庫日志文件
USE [msdb] GO /****** Object:? Job [ClearDBLog]??? Script Date: 2023/6/15 13:44:38 ******/ BEGIN TRANSACTION DECLARE @ReturnCode INT SELECT @ReturnCode = 0 /****** Object:? JobCategory [Database Maintenance]??? Script Date: 2023/6/15 13:44:38 ******/ IF NOT EXISTS (SELECT name FROM msdb.dbo.syscategories WHERE name=N'Database Maintenance' AND category_class=1) BEGIN EXEC @ReturnCode = msdb.dbo.sp_add_category @class=N'JOB', @type=N'LOCAL', @name=N'Database Maintenance' IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback END DECLARE @jobId BINARY(16) EXEC @ReturnCode =? msdb.dbo.sp_add_job @job_name=N'ClearDBLog', ????????@enabled=1, ????????@notify_level_eventlog=2, ????????@notify_level_email=0, ????????@notify_level_netsend=0, ????????@notify_level_page=0, ????????@delete_level=0, ????????@description=N'無描述。', ????????@category_name=N'Database Maintenance', ????????@owner_login_name=N'sa', @job_id = @jobId OUTPUT IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback /****** Object:? Step [ClearDBLogStep1]??? Script Date: 2023/6/15 13:44:38 ******/ EXEC @ReturnCode = msdb.dbo.sp_add_jobstep @job_id=@jobId, @step_name=N'ClearDBLogStep1', ????????@step_id=1, ????????@cmdexec_success_code=0, ????????@on_success_action=1, ????????@on_success_step_id=0, ????????@on_fail_action=2, ????????@on_fail_step_id=0, ????????@retry_attempts=0, ????????@retry_interval=0, ????????@os_run_priority=0, @subsystem=N'TSQL', ????????@command=N'ALTER DATABASE [laoliang_net] SET RECOVERY SIMPLE WITH NO_WAIT? GO --設(shè)置數(shù)據(jù)庫恢復(fù)模式為簡單 ALTER DATABASE [laoliang_net] SET RECOVERY SIMPLE; GO --收縮日志文件 DBCC SHRINKFILE (N''laoliang_net_log'', 11, TRUNCATEONLY); GO ALTER DATABASE [laoliang_net] SET RECOVERY FULL WITH NO_WAIT? GO? --恢復(fù)數(shù)據(jù)庫還原模式為完整 ALTER DATABASE [laoliang_net] SET RECOVERY FULL', ????????@database_name=N'laoliang_net', ????????@flags=0 IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback EXEC @ReturnCode = msdb.dbo.sp_update_job @job_id = @jobId, @start_step_id = 1 IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback EXEC @ReturnCode = msdb.dbo.sp_add_jobschedule @job_id=@jobId, @name=N'ClearDBLogPlan', ????????@enabled=1, ????????@freq_type=4, ????????@freq_interval=1, ????????@freq_subday_type=1, ????????@freq_subday_interval=0, ????????@freq_relative_interval=0, ????????@freq_recurrence_factor=0, ????????@active_start_date=20230615, ????????@active_end_date=99991231, ????????@active_start_time=0, ????????@active_end_time=235959, ????????@schedule_uid=N'bddeed70-2db4-4041-99d5-376dadc7870e' IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback EXEC @ReturnCode = msdb.dbo.sp_add_jobserver @job_id = @jobId, @server_name = N'(local)' IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback COMMIT TRANSACTION GOTO EndSave QuitWithRollback: ????IF (@@TRANCOUNT > 0) ROLLBACK TRANSACTION EndSave: GO
其中,laoliang_net為數(shù)據(jù)庫文件名稱,laoliang_net_log為數(shù)據(jù)庫日志文件名稱。
具體在使用的時候,將數(shù)據(jù)庫文件名稱和數(shù)據(jù)庫日志文件名稱替換為自己數(shù)據(jù)庫的相關(guān)文件名稱,然后在數(shù)據(jù)庫查詢框中執(zhí)行以上代碼,就會生成SQL Server代理作業(yè)(數(shù)據(jù)庫需啟用SQL Server代理服務(wù))。
右鍵點擊“屬性”,在彈出界面中選擇“計劃”
雙擊右側(cè)的計劃列表,可以設(shè)置作業(yè)運行的頻率。
按照以上就可以按照規(guī)劃的時間來定時清理SQL日志文件啦!
問題未解決?付費解決問題加Q或微信 2589053300 (即Q號又微信號)右上方掃一掃可加博主微信
所寫所說,是心之所感,思之所悟,行之所得;文當無敷衍,落筆求簡潔。 以所舍,求所獲;有所依,方所成!
賞
支付寶贊助
微信贊助
免責(zé)聲明,若由于商用引起版權(quán)糾紛,一切責(zé)任均由使用者承擔(dān)。
您必須遵守我們的協(xié)議,如您下載該資源,行為將被視為對《免責(zé)聲明》全部內(nèi)容的認可->聯(lián)系老梁投訴資源 LaoLiang.Net部分資源來自互聯(lián)網(wǎng)收集,僅供用于學(xué)習(xí)和交流,請勿用于商業(yè)用途。如有侵權(quán)、不妥之處,請聯(lián)系站長并出示版權(quán)證明以便刪除。
敬請諒解! 侵權(quán)刪帖/違法舉報/投稿等事物聯(lián)系郵箱:service@laoliang.net
意在交流學(xué)習(xí),歡迎贊賞評論,如有謬誤,請聯(lián)系指正;轉(zhuǎn)載請注明出處: » 利用SQL Server代理服務(wù)-定時清理SQL Server數(shù)據(jù)庫日志文件