adminbd

Записи по mssql,oracle,windows и linux

Have a Question?

If you have any question you can ask below or enter what you are looking for!

Хранимая процедура для архивирования журнала при достижении @danger_value.

Архивирования журнала при достижении @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;

Хранимая процедура для архивирования журнала при достижении @danger_value.

Доработанный скрипт . Теперь письмо при ходит если лог вырос за час между 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

 

Leave a Reply

Your email address will not be published. Required fields are marked *

You can use these HTML tags and attributes <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>