Advertisements
This script will check the recovery model and larger log files and notify an alert, when it does not sync.
Table:
USE [DBAdata] GO drop table tbl_Large_logfile_sync_with_recovery_model_check CREATE TABLE [dbo].[tbl_Large_logfile_sync_with_recovery_model_check]( [servername] [sysname] NULL, [dbname] [sysname] NOT NULL, [filename] [sysname] NOT NULL, [recovery_model] [sysname] NOT NULL, [log_size] [int] NULL, [freespace] [varchar](50) NULL, [Drive_letter] [sysname] NULL, [log_reuse_wait_desc] [sysname] NOT NULL ) USE [DBAdata_archive] GO drop table tbl_Large_logfile_sync_with_recovery_model_check CREATE TABLE [dbo].[tbl_Large_logfile_sync_with_recovery_model_check]( [servername] [sysname] NULL, [dbname] [sysname] NOT NULL, [filename] [sysname] NOT NULL, [recovery_model] [sysname] NOT NULL, [log_size] [int] NULL, [freespace] [varchar](50) NULL, [Drive_letter] [sysname] NULL, [log_reuse_wait_desc] [sysname] NOT NULL, upload_date datetime )
SP:
USE [DBAdata] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO /* USE [DBAdata] GO drop table tbl_Large_logfile_sync_with_recovery_model_check CREATE TABLE [dbo].[tbl_Large_logfile_sync_with_recovery_model_check]( [servername] [sysname] NULL, [dbname] [sysname] NOT NULL, [filename] [sysname] NOT NULL, [recovery_model] [sysname] NOT NULL, [log_size] [int] NULL, [freespace] [varchar](50) NULL, [Drive_letter] [sysname] NULL, [log_reuse_wait_desc] [sysname] NOT NULL ) USE [DBAdata_archive] GO drop table tbl_Large_logfile_sync_with_recovery_model_check CREATE TABLE [dbo].[tbl_Large_logfile_sync_with_recovery_model_check]( [servername] [sysname] NULL, [dbname] [sysname] NOT NULL, [filename] [sysname] NOT NULL, [recovery_model] [sysname] NOT NULL, [log_size] [int] NULL, [freespace] [varchar](50) NULL, [Drive_letter] [sysname] NULL, [log_reuse_wait_desc] [sysname] NOT NULL, upload_date datetime ) select * from tbl_Error_handling order by Upload_Date desc select * from tbl_recovery_model and name not in (''''''''ReportServer'''''''',''''''''ReportServerTempDB'''''''') */ exec dbadata.[dbo].[USP_Large_logfile_sync_with_recovery_model_check] @P_log_size = 50000, @P_freespace =50000 -- alert where log file is big not sync with recovery model alter proc [dbo].[USP_Large_logfile_sync_with_recovery_model_check] /* Summary: Send the log file size bot matching with recovery model to DBA Team Contact: Muthukkumaran Kaliyamoorthy SQL DBA Description: Send the log file size bot matching with recovery model to DBA Team ChangeLog: Date Coder Description 2012-06-04 Muthukkumaran Kaliyamoorthy created Large log file than drive space *******************All the SQL keywords should be written in upper case******************** */ --with Encryption (@P_log_size bigint, @P_freespace bigint) as begin DECLARE @server_name SYSNAME DECLARE @DESC SYSNAME DECLARE @sql varchar(max) DECLARE @minrow int DECLARE @maxrow int -- select * from tbl_Large_logfile_sync_with_recovery_model_check TRUNCATE TABLE tbl_Large_logfile_sync_with_recovery_model_check BEGIN TRY insert into tbl_Large_logfile_sync_with_recovery_model_check select servername,dbname,filename,recovery_model,log_size,freespace,Drive_letter,log_reuse_wait_desc--,[log_usedsize%] from [dbo].[tbl_get_logfiles_Huge] LH join [tbl_recovery_model_non_Prod] RM on (LH.SERVERNAME=RM.SERVER_NAME) where lh.dbname=rm.db_name --and log_size >20000 and freespace <50000 insert into tbl_Large_logfile_sync_with_recovery_model_check select servername,dbname,filename,recovery_model,log_size,freespace,Drive_letter,log_reuse_wait_desc--,[log_usedsize%] --into tbl_Large_logfile_sync_with_recovery_model_check from [dbo].[tbl_get_logfiles_Huge] LH join tbl_recovery_model RM on (LH.SERVERNAME=RM.SERVER_NAME) where lh.dbname=rm.db_name --and log_size >20000 and freespace <50000 end try BEGIN CATCH SELECT @SERVER_NAME,ERROR_NUMBER() AS ErrorNumber,ERROR_MESSAGE() AS ErrorMessage; insert into tbl_Error_handling SELECT @SERVER_NAME,'Largerlog_sysn_RM',[Error_Line] = ERROR_LINE(),[Error_Number] = ERROR_NUMBER(), [Error_Severity] = ERROR_SEVERITY(),[Error_State] = ERROR_STATE(), [Error_Message] = ERROR_MESSAGE(),GETDATE() END CATCH ---------------------------------------------------------------- --Send an email to DBA team ----------------------------------------------------------------- DECLARE @servername varchar(100),@dbname varchar(100),@filename varchar(100),@recovery_model varchar(100), @log_size varchar(100),@freespace varchar(100),@Drive_letter varchar(100),@log_reuse_wait_desc varchar(100), @log_usedsize varchar(100) --SELECT * FROM dbadata.dbo.tbl_recovery_model IF EXISTS ( select 1 from [dbo].[tbl_get_logfiles_Huge] LH join tbl_recovery_model RM on (LH.SERVERNAME=RM.SERVER_NAME) where lh.dbname=rm.db_name and log_size >@P_log_size and freespace <@P_freespace ) begin DECLARE Largelog_RM_CuR CURSOR FOR select servername,dbname,filename,recovery_model,log_size,freespace,Drive_letter,log_reuse_wait_desc--,[log_usedsize%] --into tbl_Large_logfile_sync_with_recovery_model_check from [dbo].[tbl_get_logfiles_Huge] LH join tbl_recovery_model RM on (LH.SERVERNAME=RM.SERVER_NAME) where lh.dbname=rm.db_name and log_size >@P_log_size and freespace <@P_freespace OPEN Largelog_RM_CuR FETCH NEXT FROM Largelog_RM_CuR INTO @servername,@dbname,@filename,@recovery_model,@log_size,@freespace,@Drive_letter,@log_reuse_wait_desc--,@log_usedsize DECLARE @BODY1 VARCHAR(max) SET @BODY1= '<font size=2 color=#C35817 face=''verdana''><B>Followings are Big log Sync with recover model:</b> </font> <P> <font size=1 color=#FF00FF face=''verdana''> <Table border=5 width=1000 bgcolor=#ECE5B6 cellpadding=1 style="color:#7E2217;font-face:verdana;font-size:12px;"> <b> <tr bgcolor=#8A4117 align=center style="color:#FFFFFF;font-weight:bold"> <td width=600 color=white>Server Name</td> <td width=200 color=white>Database Name</td> <td width=200 color=white>File Name</td> <td width=200 color=white>Recovery</td> <td width=200 color=white>Log Size</td> <td width=200 color=white>Drive Free</td> <td width=200 color=white>Drive</td> <td width=200 color=white>Log Wait</td> </b> </tr>' WHILE @@FETCH_STATUS=0 BEGIN SET @BODY1= @BODY1 +'<tr> <td>'+ISNULL(@servername,' ')+'</td>'+ '<td align=center>'+ISNULL(@DBname,' ')+'</td>'+ '<td align=center>'+ISNULL(@filename,' ')+'</td>'+ '<td align=center>'+ISNULL(@recovery_model,' ')+'</td>'+ '<td align=center>'+ISNULL(@log_size,' ')+'</td>'+ '<td align=center>'+ISNULL(@freespace,' ')+'</td>'+ '<td align=center>'+ISNULL(@Drive_letter,' ')+'</td>'+ '<td align=center>'+ISNULL(@log_reuse_wait_desc,' ')+'</td>' FETCH NEXT FROM Largelog_RM_CuR INTO @servername,@dbname,@filename,@recovery_model,@log_size,@freespace,@Drive_letter,@log_reuse_wait_desc--,@log_usedsize END SET @BODY1=@BODY1+'</Table> </p> <p> <font style="color:#7E2217;font-face:verdana;font-size:9px;"> Generated on ' +convert(varchar(30),getdate(),100)+'. </BR> This is an auto generated mail by DBA Team. If you receive this email by mistake please contact us. </br> © Property of DBA Team. </font>' CLOSE Largelog_RM_CuR DEALLOCATE Largelog_RM_CuR DECLARE @EMAILIDS VARCHAR(500) SELECT @EMAILIDS= COALESCE(@EMAILIDS+';','')+EMAIL_ADDRESS FROM DBADATA.dbo.DBA_ALL_OPERATORS WHERE name ='muthu' and STATUS =1 DECLARE @EMAILIDS1 VARCHAR(500) SELECT @EMAILIDS1= COALESCE(@EMAILIDS1+';','')+EMAIL_ADDRESS FROM DBAdata.DBO.DBA_ALL_OPERATORS WHERE STATUS =1 and Mail_copy='CC' EXEC MSDB.DBO.SP_SEND_DBMAIL @RECIPIENTS=@EMAILIDS, @SUBJECT = 'DBA: Big log Sync with recover model Report', @BODY = @BODY1, @copy_recipients=@EMAILIDS1, @BODY_FORMAT = 'HTML' ,@PROFILE_NAME='muthu'; --select @BODY1 ------------------------------------------------------- end insert into DBAdata_Archive.dbo.tbl_Large_logfile_sync_with_recovery_model_check select *,getdate() from tbl_Large_logfile_sync_with_recovery_model_check END