create proc usp_sendspacealert
as
--此存储需要打开xp_cmdshell执行权限
--定义磁盘剩余空间表
declare @y table (DRIVE varchar(2),FREE_MB INT)
insert into @y exec master.dbo.xp_fixeddrives
--定义磁盘总空间临时信息表
--此步骤通过dos命令diskpart调用输入结果存入临时表中,需要在C:\目录中存在a.txt文件,且a.txt文件内容为"list vol"
declare @x table (volinfo varchar(200))
insert into @x exec xp_cmdshell 'diskpart < c:\a.txt |findstr "Partition" '
delete from @x where volinfo is NULL
--定义磁盘空间表
declare @z table (DRIVENAME varchar(2),DISKSPACE_GB INT)
insert INTo @z
select substring (volinfo,charindex('volume',volinfo,0)+13,1) AS DRIVENAME,
substring (volinfo,charindex('partition',volinfo,0)+9,
charindex ('GB',volinfo,0)-charindex ('partition',volinfo,0)-9)AS DISKSPACE_GB from @x
--判断是否有剩余空间小于20%的磁盘,如果存储就将结果集以HTML格式发出
if exists
(select a.DRIVE,a.FREE_MB/1024 as FREE_GB,b.DISKSPACE_
当磁盘剩余空间小于百分二十的时候发报警邮件的存储过程。
最新推荐文章于 2023-07-29 22:27:55 发布
这是一个SQL存储过程,用于监控磁盘空间。当磁盘剩余空间低于20%时,该过程会通过电子邮件发送报警。它首先通过`usp_sendspacealert`获取磁盘信息,然后使用`xp_cmdshell`执行外部命令获取详细空间数据。如果发现有磁盘空间不足的情况,存储过程将构造HTML格式的邮件内容并通过`msdb.dbo.sp_send_dbmail`发送邮件。
摘要由CSDN通过智能技术生成