数据库使用空间监控,并且每周发邮件预警,下面是操作步骤:

1:建立一张表

CREATE TABLE [_DBA].DBO.DB_USE_REPORT(server_name NVARCHAR(20),
database_name NVARCHAR(20), file_group NVARCHAR(20), logical_name NVARCHAR(30), physical_name NVARCHAR(200),
type_desc NVARCHAR(20), used_size_Mb int, allocated_size_mb int, max_size_Mb int, growth int, is_percent_growth int)
go
alter table [_DBA].DBO.DB_USE_REPORT add inserttime datetime default getdate()

2:在各个数据库每天收集一次数据

insert into [_DBA].DBO.DB_USE_REPORT
select @@SERVERNAME as server_name
,DB_NAME() as database_name
,case when data_space_id = 0 then 'LOG'
else FILEGROUP_NAME(data_space_id)
end as file_group
,name as logical_name
,physical_name
,type_desc
,FILEPROPERTY(name,'SpaceUsed')/128.0 as used_size_Mb
,size/128.0 as allocated_size_mb
,case when max_size = -1 then max_size
else max_size/128.0
end as max_size_Mb
,growth
,is_percent_growth,getdate()
from sys.database_files
where state_desc = 'ONLINE'

可以写成一个作业定时监控,每天定时插入数据。

3:创建存储过程发邮件出来每周report一次

USE [master]
GO /****** Object: StoredProcedure [dbo].[check_job_states] Script Date: 2017/2/7 11:20:13 ******/
SET ANSI_NULLS ON
GO SET QUOTED_IDENTIFIER ON
GO -- =============================================
-- Author: maxiangqian
-- Create date: 20170207
-- Description: <monitor db use>
-- =============================================
CREATE PROCEDURE [dbo].[check_db_use] AS
BEGIN
DECLARE @tableHTML NVARCHAR(MAX) ;
SET @tableHTML =
N'<H1>DB USED Report Last Week</H1>' +
N'<table border="1">' +
N'<tr><th>database_name</th><th>used_size_Mb</th>' +
N'<th>allocated_size_mb</th><th>type_desc</th><th>inserttime</th>' +
--N'<th>Expected Revenue</th></tr>' +
CAST ( (
SELECT td =database_name , '',
td =used_size_Mb , '',
td =allocated_size_mb, '',
td =type_desc, '',
td =inserttime from [_DBA].DBO.DB_USE_REPORT where inserttime> (getdate()-7) order by [database_name],type_desc,inserttime desc
FOR XML PATH('tr'), TYPE
) AS NVARCHAR(MAX) ) +
N'</table>' ;
EXEC msdb.dbo.sp_send_dbmail @profile_name = 'sendmail',
@recipients='729975475@qq.com;',
@subject = 'DB USED Report Last Week',
@body = @tableHTML,
@body_format = 'HTML' ;
END
GO

然后创建一个定时作业直接每周report一次就好了。

邮件预警的效果图如下:

好了,就这么多了。你们不点个赞吗,关于sqlserver+MySQL的技术问题,欢迎加入QQ群:291519319   共同探讨

最新文章

  1. 一个c#的输入框函数
  2. Java语言程序设计(基础篇) 第四章 数学函数、字符和字符串
  3. 移动设计必备:iPhone 5S PSD 矢量原型免费下载
  4. 为什么使用Sass
  5. java中的负数的问题
  6. tomcat启动闪退
  7. Mahout推荐算法基础
  8. win10环境下python3.5安装步骤
  9. 40叔:自学的伙伴推荐看的PHP视频和书藉
  10. 纸飞机AE小教程
  11. SpringIOC/DI(2)
  12. python中list添加元素的方法append()、extend()和insert()
  13. 观察者模式C#实现实例(一)
  14. C# 获取外网IP地址
  15. spring 开发 Tars
  16. Biorhythms HDU - 1370 (中国剩余定理)
  17. Java实习生面试题整理
  18. Java HashMap 默认排序
  19. 常用的vue辅助工具vue-devtools
  20. OPCDAAuto.dll 的一个坑

热门文章

  1. CDH集群安装配置(七)--CDH组件的安装和配置
  2. SpringBoot集成WebSocket【基于纯H5】进行点对点[一对一]和广播[一对多]实时推送
  3. mysql忘记root密码处理
  4. proxy的作用
  5. C++下混合编译c语言方法总结
  6. 通过overflow: scroll;来实现部分区域的滚动
  7. 【LESS系列】简介和使用
  8. Java ArrayList trimToSize()
  9. Java生成二维码和解析二维码URL
  10. Linux学习笔记之(2)~linux目录树概览和说明