sqlserver数据库使用空间监控
2024-08-25 10:55:37
数据库使用空间监控,并且每周发邮件预警,下面是操作步骤:
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 共同探讨
最新文章
- 一个c#的输入框函数
- Java语言程序设计(基础篇) 第四章 数学函数、字符和字符串
- 移动设计必备:iPhone 5S PSD 矢量原型免费下载
- 为什么使用Sass
- java中的负数的问题
- tomcat启动闪退
- Mahout推荐算法基础
- win10环境下python3.5安装步骤
- 40叔:自学的伙伴推荐看的PHP视频和书藉
- 纸飞机AE小教程
- SpringIOC/DI(2)
- python中list添加元素的方法append()、extend()和insert()
- 观察者模式C#实现实例(一)
- C# 获取外网IP地址
- spring 开发 Tars
- Biorhythms HDU - 1370 (中国剩余定理)
- Java实习生面试题整理
- Java HashMap 默认排序
- 常用的vue辅助工具vue-devtools
- OPCDAAuto.dll 的一个坑
热门文章
- CDH集群安装配置(七)--CDH组件的安装和配置
- SpringBoot集成WebSocket【基于纯H5】进行点对点[一对一]和广播[一对多]实时推送
- mysql忘记root密码处理
- proxy的作用
- C++下混合编译c语言方法总结
- 通过overflow: scroll;来实现部分区域的滚动
- 【LESS系列】简介和使用
- Java ArrayList trimToSize()
- Java生成二维码和解析二维码URL
- Linux学习笔记之(2)~linux目录树概览和说明