sql查询磁盘空间并发预警邮件


检测磁盘空间,如果低于设置的预警值则发出一封预警邮件,这样的事情可以用SQL server的作业可以做,关键SQL语句如下例子所示:

DECLARE @TableText NVARCHAR(MAX)='' ; --邮件正文
declare @c int=15000 --C盘最低报警15G

if exists (select * from tempdb.dbo.sysobjects where id = object_id(N'tempdb..#aa') and type='U')
drop table #aa
create table #aa
(
pan varchar(50),kj varchar(50)
)

--master.dbo.xp_fixeddrives是检测硬盘空间的系统存储过程,执行结果的磁盘可用空间单位是MB
insert into #aa Exec master.dbo.xp_fixeddrives

if ((select kj from #aa where pan='C')<@c)
begin
set @TableText+='C盘空间不足,剩余空间:'+(select kj from #aa where pan='C')+'M 预警空间:'+Convert(varchar,@c)+'M';
end
drop table #aa;

if(LEN(@TableText)>0)
begin
EXEC msdb.dbo.sp_send_dbmail  --msdb.dbo.sp_send_dbmail 是发邮件的系统存储过程。当然,在用之前,还需要在数据库中设置邮件服务:数据库右击->管理->数据库邮件->右击,配置数据库邮件
@profile_name = 'alertmail',
@recipients = '123@test.com;456@test.com', --收件人,可以是多个,也可以是单个。当多个的时候用分号隔开
@body = @TableText,
@subject = '服务器磁盘空间预警'
end

相关