监控 log文件大小的存储过程

1、监控log文件大小超过10g的server 和db

复制代码 代码如下:

create procedure db_sendmail_mssqllogsize

as

declare @sql varchar(max),@servername varchar(50),@px int;

DECLARE @xml NVARCHAR(MAX)

DECLARE @body NVARCHAR(MAX)

declare @a varchar(200)

declare @c datetime

select @c=getdate();

select

hostname

,px=ROW_NUMBER()over(order by (select 1))

into #temp

from DB_ALLHostInfo as x1

inner join sys.servers as x2

on x1.hostname=x2.name

where isactive=1;

select @px=px,@servername=hostname from #temp where px=1;

while @@ROWCOUNT>0

begin

set @sql=

'insert into db_alldb_logsize

select *,cast(convert(char(8),GETDATE(),112) as datetime) as gdate ,'''+@servername+''' from openquery('+QUOTENAME(@servername)+',''select DB_NAME(database_id) as dbname,name as logname,round(cast(size as float)*8/1024,3) as [logsize(mb)],state_desc,physi

cal_name, is_percent_growth,growth,max_size

from

master.sys.master_files

where type_desc=''''log''''

and DB_NAME(database_id) not in(''''master'''',''''tempdb'''',''''msdb'''',''''reportserver'''',''''reportservertempdb'''',''''distribution'''',''''model'''')

and DATABASEPROPERTY(DB_NAME(database_id),''''IsReadOnly'''')<>1'') as b;'

execute(@sql)

select 1

select top(1) @px=px,@servername=hostname from #temp where px>@px

end;

set @xml=cast((select J.servername as 'td','', isnull(J.dbname,'\') as 'td','', J.logname as 'td','' ,cast([logsize(mb)] as varchar(20))as 'td',''

,state_desc as 'td',''

,physical_name as 'td',''

,case when max_size =0 then '不允许增长' when max_size=-1 then '文件将一直增长到磁盘变满为止' when max_size=268435456 then ' 日志文件将增长到最大大小 2 TB' end as 'td',''

,case when is_percent_growth =1 then '以按百分比'+cast(growth AS varchar(3))+'%' when is_percent_growth =0 then ' 以按大小'+cast(growth*8/1024 AS varchar(50))+'(mb)增长' end as 'td',''

,convert(char(8),gdate,112) as 'td',''

from db_alldb_logsize as j where gdate=cast(CONVERT(char(8),getdate(),112) as datetime) and [logsize(mb)]>=10240

FOR XML PATH('tr'), ELEMENTS) AS NVARCHAR(MAX)) ;

set @a='Mssqllog运行结果_'+convert (varchar(50),convert(varchar(5),YEAR(getdate()-1))+'年'+convert(varchar(2),month(getdate()-1))+'月'+convert(varchar(2),day(getdate()-1)))+'日'

--print @a

SET @body ='<html><H1>'+convert(varchar(5),YEAR(getdate()) )+'年'+convert(varchar(2),month(getdate()))+'月'+convert(varchar(2),day(getdate()))+'Mssqllog运行结果</H1><body bgcolor=#E3F6CE><table border =1>

<tr><th>服务器ip</th><th>数据库</th><th>日志文件名</th><th>日志文件大小(mb)</th><th>状态</th><th>物理路径</th><th>增长类型</th><th>增长状态</th><th>日期</th>'

if @xml is not null SET @body = @body + @xml +'</table></body></html>'

EXEC msdb.dbo.sp_send_dbmail

@recipients =N'xuwj@5173.com',

@body = @body,

@body_format ='HTML',

@subject =@a,

@profile_name ='profile1'

execute db_sendmail_mssqllogsize

2 邮件

3配上简单的报表

时间: 2024-10-02 23:32:26

监控 log文件大小的存储过程的相关文章

监控 log文件大小的存储过程_MsSql

1.监控log文件大小超过10g的server 和db 复制代码 代码如下: create procedure db_sendmail_mssqllogsize as declare @sql varchar(max),@servername varchar(50),@px int; DECLARE @xml NVARCHAR(MAX) DECLARE @body NVARCHAR(MAX) declare @a varchar(200) declare @c datetime select @

archive log文件大小与redo log文件大小关系探究

     首先我们来看下什么是archive log file,oracle 11g 的concept中是这样定义的:When you enable archiving of the online redo logs, Oracle Database copies the online redo log files to another location before they are overwritten. These copied files are referred to as arch

win2003设置apache access.log和error.log文件大小

Apache下的access.log和error.log文件从安装服务器到现在没有动过,今天突然http://www.aliyun.com/zixun/aggregation/11656.html">discuz 的MYSQL数据库连接错误,提示2003 错误,检查发现原来是error.log.access.log爆满,文件达到30个G,奶奶的,立马搜索,得把这两个小子干掉. 下面是在网上搜索到的方法,立马见效,顶一个! 在 Windows 下的设置例子如下: 第一步:删除 Apache2

SQL SERVER 日志传送,设置,监控,角色转移

server|监控                 Log ShippingOperations Guide                                 Version: 1.0    By TonyMeng 2004-11-30      Index     Create Log Shipping.. 3 Monitor.. 9 Delete Log shipping.. 10 Role Alter.. 11 Role Change.. 13                

MS SQL 监控数据/日志文件增长

  前几天,在所有数据库服务器部署了监控磁盘空间的存储过程和作业后(MS SQL 监控磁盘空间告警), 今天突然收到了两封告警邮件,好吧,存储规划是一方面,但是,是不是要分析一下是什么原因造成磁盘空间不足的呢?会不会是因为突然暴增的日志文件,抑或是 系统业务猛增导致数据量暴增,还是历史数据累计原因....分析总得有数据来支撑吧,但是现在只有那些数据文件的当前大小信息,没有数据文件的历史增长变 化信息,所以,今天就想实现这么一个功能,每天(频率可以调整)去收集一下数据文件的信息,放到一个表里面,这

MSSQL 监控数据/日志文件增长实现方法

前几天,在所有数据库服务器部署了监控磁盘空间的存储过程和作业后(MS SQL 监控磁盘空间告警),今天突然收到了两封告警邮件,好吧,存储规划是一方面,但是,是不是要分析一下是什么原因造成磁盘空间不足的呢?会不会是因为突然暴增的日志文件,抑或是系统业务猛增导致数据量暴增,还是历史数据累计原因....分析总得有数据来支撑吧,但是现在只有那些数据文件的当前大小信息,没有数据文件的历史增长变化信息,所以,今天就想实现这么一个功能,每天(频率可以调整)去收集一下数据文件的信息,放到一个表里面,这样方便我们

MSSQL 监控数据/日志文件增长实现方法_MsSql

前几天,在所有数据库服务器部署了监控磁盘空间的存储过程和作业后(MS SQL 监控磁盘空间告警),今天突然收到了两封告警邮件,好吧,存储规划是一方面,但是,是不是要分析一下是什么原因造成磁盘空间不足的呢?会不会是因为突然暴增的日志文件,抑或是系统业务猛增导致数据量暴增,还是历史数据累计原因....分析总得有数据来支撑吧,但是现在只有那些数据文件的当前大小信息,没有数据文件的历史增长变化信息,所以,今天就想实现这么一个功能,每天(频率可以调整)去收集一下数据文件的信息,放到一个表里面,这样方便我们

如何从外部监控Lotus Notes的日志

问题描述 Notes的日志文件log.nsf只能在Notes内部看到现在有个第三方的日志监视工具只能监视文本类型的文件采用什么办法可以监视到Notes的日志呢如下设想1.采用Notes命令行方式定期导出log.nsf为文本类型的文件?2.采用第三方工具把log.nsf导出为文本类型的文件?是在LotusNotes6.5上目的是要让第三方的网管软件能监视到Notes的日志有没有解决办法呢? 解决方案 解决方案二:顶解决方案三:监控文本文件的可行,直接监视cosole.log日志不就行了嘛解决方案四

AlwaysON同步性能监控的三板斧

延迟是AlwaysOn最大的敌人之一 延迟是AlwaysON的最大敌人之一.对AlwaysON而言,其首要目标就尽量减少(无法避免)主副本.辅助副本的数据延迟,实现主副本.辅助副本的"数据同步".只有主副本.辅助副本的同步延迟越小越高,只读访问的实性性才会越高,数据库的RTO(Estimating Failover Time )和RPO(Estimating Potential Data Loss)也才会越小. 但延迟可能存在于AlwaysON同步的各个环节中,因此,在分析现延迟情况时