Архивирования журнала при достижении @danger_value. Идея в том что лог будет усекаться при достижении 7 гб. Это сделано так как настроен лог шипинг.
eclare @tran_log_space_usage table( database_name sysname , log_size_mb float , log_space_used float , status int ); declare @log_space_used float -- Доля (в процентах) файла журнала, в настоящее время заполненная declare @danger_value int -- Значение в Мб, при достижение которого архивируется журнал declare @job_start_name sysname -- Название задания в Агенте MSSQL set @danger_value = 7000 set @job_start_name = N'SSAS_LSBackup_ax_molniya' insert into @tran_log_space_usage exec('DBCC SQLPERF ( LOGSPACE )') ; set @log_space_used = ( select (log_space_used * log_size_mb / 100) from @tran_log_space_usage where database_name = DB_NAME() ) if (@log_space_used > @danger_value) begin EXEC msdb.dbo.sp_start_job @job_start_name;
Доработанный скрипт . Теперь письмо при ходит если лог вырос за час между 10 гб и 20 гб. Если больше то отправится письмо и смс:
declare @tran_log_space_usage table( database_name sysname , log_size_mb float , log_space_used float , status int ); declare @log_space_used float -- Доля (в процентах) файла журнала, в настоящее время заполненная declare @danger_value int -- Значение в Мб, при достижение которого архивируется журнал declare @job_start_name sysname -- Название задания в Агенте MSSQL set @danger_value = 10 set @job_start_name = N'SSAS_LSBackup_ax_molniya' insert into @tran_log_space_usage exec('DBCC SQLPERF ( LOGSPACE )') ; set @log_space_used = ( select (log_space_used * log_size_mb / 100) from @tran_log_space_usage where database_name = DB_NAME() ) if ( @log_space_used BETWEEN 10000 AND 20000) begin EXEC msdb.dbo.sp_start_job @job_start_name; EXEC [master].[dbo].[rkur_send_job_status] @job_name = N'backup_log_dv_SSAS_LSBackup_ax_molniya', @job_desc = N'SSAS.Архивирование журнала при достижении @danger_value. по простому: Начал сильно расти лог,обрати внимание', @job_status = 'OK', @dbmail_@recipients = N'event.messages@ctmol.ru'; end ELSE if ( @log_space_used > 20000 ) BEGIN EXEC msdb.dbo.sp_start_job @job_start_name; EXEC [master].[dbo].[rkur_send_job_status] @job_name = N'backup_log_dv_SSAS_LSBackup_ax_molniya', @job_desc = N'SSAS.Архивирование журнала при достижении @danger_value. по простому: Начал сильно расти лог,обрати внимание', @job_status = 'OK', @dbmail_@recipients = N'event.messages@ctmol.ru'; exec SendSMS 'S0030.SSAS.Архивирование журнала при достижении @danger_value. по простому: Начал сильно расти лог,обрати внимание', '795********'; exec SendSMS 'S0030.SSAS.Архивирование журнала при достижении @danger_value. по простому: Начал сильно расти лог,обрати внимание', '791********'; exec SendSMS 'S0030.SSAS.Архивирование журнала при достижении @danger_value. по простому: Начал сильно расти лог,обрати внимание', '792********'; exec SendSMS 'S0030.SSAS.Архивирование журнала при достижении @danger_value. по простому: Начал сильно расти лог,обрати внимание', '795********'; end
Новая версия с Отправкой размера лога
-- ============================================= -- Author: Руслан Курьянов -- Create date: 2014-02-19 -- Version : 0.1 -- Description: Архивирование журнала при достижении @danger_value -- ============================================= declare @tran_log_space_usage table( database_name sysname , log_size_mb float , log_space_used float , status int ); declare @log_space_used float -- Доля (в процентах) файла журнала, в настоящее время заполненная declare @danger_value int -- Значение в Мб, при достижение которого архивируется журнал declare @job_start_name sysname -- Название задания в Агенте MSSQL declare @name VARCHAR(MAX) declare @name2 VARCHAR(MAX) declare @123 VARCHAR(MAX) set @danger_value = 10 set @job_start_name = N'SSAS_LSBackup_ax_molniya' insert into @tran_log_space_usage exec('DBCC SQLPERF ( LOGSPACE )') ; set @log_space_used = ( select (log_space_used * log_size_mb / 100) from @tran_log_space_usage where database_name = DB_NAME() ) PRINT @log_space_used if ( @log_space_used BETWEEN 10000 AND 20000) begin EXEC msdb.dbo.sp_start_job @job_start_name; set @123 = CAST(@log_space_used AS VARCHAR(256)) set @name = 'SSAS.Архивирование журнала при достижении @danger_value. по простому: Лог вырас больше 10 гб но меньше 20 гб Размер лога ='+@123+' Мб ' EXEC [master].[dbo].[rkur_send_job_status] @job_name = N'backup_log_dv_SSAS_LSBackup_ax_molniya', @job_desc = @name, @job_status = 'OK', @dbmail_@recipients = N'event.messages@ctmol.ru'; end ELSE if ( @log_space_used > 20000 ) BEGIN EXEC msdb.dbo.sp_start_job @job_start_name; set @123 = CAST(@log_space_used AS VARCHAR(256)) set @name2 = 'S0030.SSAS.Архивирование журнала при достижении @danger_value. по простому: Начал сильно расти лог,обрати внимание. Размер лога ='+@123+'Мб' EXEC [master].[dbo].[rkur_send_job_status] @job_name = N'backup_log_dv_SSAS_LSBackup_ax_molniya', @job_desc = @name2, @job_status = 'OK', @dbmail_@recipients = N'event.messages@ctmol.ru'; exec SendSMS @name2 , '7950******'; exec SendSMS @name2, '7912******'; exec SendSMS @name2, '792******'; exec SendSMS @name2, '795******'; end
Similar Posts:
- Хранимая процедура для архивирования журнала при достижении @danger_value.
- Как сделать проверку выполнения задания. версия 2
- Изменить владельца mssql job
- Как сделать проверку выполнения задания. Мониторит запущено ли задание или нет на удаленном сервере.
- Сбор статистики по заполнению фрагментации индекса на отдельных таблицах