【原创】SSIS-WMI 数据读取器任务:监控物理磁盘空间
1、背景
随着时间的推移,我们的DW会越来越大,也就意味着磁盘空间会越来越小,那如果哪一天留意不当,就会造成磁盘空间的不足而导致ETL失败,最终影响我们的系统的数据正确性和使用,更严重的有可能导致物理磁盘损坏,所以对于物理磁盘空间的监控必不可少。
下面的方法就是利用SSIS中的WMI数据读取器任务去每天查询物理磁盘的空余空间,当不足时发邮件以提示管理员。
2、步骤
2.1、新建一个SSIS包,从工具栏上拖拉一个[WMI 数据读取任务]到控制流,双击编辑组件属性
新建变量
变量名 | 类型 | 用途 |
DiskUsageRet | string | 用于存储结果集 |
Flag | int | 用于判断磁盘空间的剩余空间是否不满足要求 |
在[WmiConnection]栏,新建个WMI连接管理器
在[服务和命名空间]选项中,[服务器名称]输入你要监视的服务器的\\ + IP地址,命名空间默认即可
P.S:如果[服务器名称]为本机地址,则必须使用windows身份验证,如果使用用户凭据,则有可能会出现如下图错误,如果是远程的服务器地址,则需要使用相应的用户名和密码登录
配置完毕后点击测试,看是否验证通过
2.2、在在组件的属性编辑界面,[WMI选项]中,设置[WqlQuerySource]为以下语句
该语句是查询对应磁盘的剩余空间,剩余空间单位是Bit,所以需要我们后面自行换算。当然Win32_LogicalDisk有很多其他的字段,你可以输入select * from Win32_LogicalDisk,并且在对应的OutputType设置[数据表],在OverwriteDestination设置[覆盖目标],并将结果映射到变量中,最后用脚本组件,查看变量中的返回结果,你就可以大概知道其中的关键字段有哪些,代表何种含义,以下是本人查询结果,全部字段:
所有字段 | Access, Availability, BlockSize, Caption, Compressed, ConfigManagerErrorCode, ConfigManagerUserConfig, CreationClassName, Description, DeviceID, DriveType, ErrorCleared, ErrorDescription, ErrorMethodology, FileSystem, FreeSpace, InstallDate, LastErrorCode, MaximumComponentLength, MediaType, Name, NumberOfBlocks, PNPDeviceID, PowerManagementCapabilities, PowerManagementSupported, ProviderName, Purpose, QuotasDisabled, QuotasIncomplete, QuotasRebuilding, Size, Status, StatusInfo, SupportsDiskQuotas, SupportsFileBasedCompression, SystemCreationClassName, SystemName, VolumeDirty, VolumeName, VolumeSerialNumber |
每个字段对应的值 | 0, , , C:, False, , , Win32_LogicalDisk, Local Fixed Disk, C:, 3, , , , NTFS, 13594468352, , , 255, 12, C:, , , , , , , True, False, False, 80533680128, , , True, True, Win32_ComputerSystem, JOHN-PC, False, OS, F636E868 |
关键属性讲解:
WmiConnection | 连接WMI服务器对象,需要我们创建一个WMI连接 |
WqlQuerySourceType | 查询语句存放类型(地方) |
WqlQuerySource | 查询语句,根据存放类型的不同,这里会有相应的变换,如果存放类型选择文件,这里就需要选择对应的语句文件 |
OutputType | 查询结果输入形式。 数据表:一个完整的数据表结果集 属性名称和值:以一个属性名称和一个值一行的结果集形式返回,如:FreeSpace, 13587701760 属性值:单纯范围查询字段的值集合 |
OverWriteDestination | 写入目标的方式。 保留原始值:保留目标中的原始值 覆盖目标:将结果覆盖目标中的值 追加到目标:将结果值追加到目标 |
DestinationType | 目标类型。 变量:结果保存到变量 文件连接:将结果保存到文件 |
Destination | 目标对象 根据DestinationType不同,设置不同 |
2.3、将我们的查询结果保存到变量之后,我们就可以利用脚本组件,判断变量中的结果,以检视磁盘查询的空间是否满足要求
编辑脚本,其中的main方法如下:
public void Main()
{
double unit = * * ;
//查询的space是以b为单位的,必须将其换算成G,这里判断是否小于20G
double diskspace = Convert.ToDouble(Dts.Variables["DiskUsageRet"].Value) / unit / ;
if (diskspace < )
{
Dts.Variables["Flag"].Value = ;
// MessageBox.Show("空间不足20G", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
else
{
Dts.Variables["Flag"].Value = ;
// MessageBox.Show("空间大于20G", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
//MessageBox.Show(Dts.Variables["DiskUsageRet"].Value.ToString());
Dts.TaskResult = (int)ScriptResults.Success;
}
最后我们在写一个发送邮件的脚本,对于结果发送邮件即可
public void Main()
{
MailMessage mymail = new MailMessage("xxxx@126.com", "xxxx@126.com", "服务器C盘空间不足", "服务器C盘空间不足,请检查");
SmtpClient smtp = new SmtpClient("smtp.126.com");
smtp.Credentials = new NetworkCredential("xxxx@126.com", "密码");
smtp.Send(mymail);
Dts.TaskResult = (int)ScriptResults.Success;
}
最终但我们的空间不满足检查要求的时候,我们就可以收到邮件提醒了
如果觉得这篇文章看了对您有帮助,请点击右下方按钮【推荐】
以方便他人在 BITechStack 博客推荐栏中快速看到这些文章,感谢!。
【原创】SSIS-WMI 数据读取器任务:监控物理磁盘空间的更多相关文章
- [原创]SSIS-WMI 数据读取器任务:监控物理磁盘空间
背景: 随着时间的推移,我们的DW会越来越大,也就意味着磁盘空间会越来越小,那如果哪一天留意不当,就会造成磁盘空间的不足而导致ETL失败,最终影响我们的系统的数据正确性和使用,更严重的有可 ...
- Extjs的数据读取器store和后台返回类型简单解析
工作中用到了Extjs,从后台获取数据的时候,用到了extjs自己的Ext.data.store方法,然后封装了ExtGridReturn方法, 目的:前台用到Ext.data.store读取从后台传 ...
- 数据读取器对象SqlDataReader与数据适配器对象SqlDataAdapter的使用
一.数据读取器对象SqlDataReader的使用 如何执行有查询结果集的select语句. 1.SqlDataReader对象的作用:当包含select语句的SqlCommad对象 ...
- c#中使用数据读取器读取查询结果
今天有时间了. 在看<c#数据库入门经典> ,总结数据读取器查询结果. 针对单个结果集使用读取器,有3中方法: String connString =..; String sql =@&q ...
- 如何在ADO中使用数据读取器(DataReader)读取数据
DbDataReader类型(实现IDataReader接口)是从数据源获取信息最简单也最快速的方法. 数据读取器是只读向前的效据流.井且一次返回一条记录.因此.只有当你向数据源提交 Select 查 ...
- 调用EF的存储过程报“存储区数据提供程序返回的数据读取器所具有的列数对于所请求的查询不够”问题
在运用Entity Framework调用存储过程的时候,遇到"调用EF的存储过程报"调用EF的存储过程报“存储区数据提供程序返回的数据读取器所具有的列数对于所请求的查询不够”问题 ...
- zabbix监控windows磁盘空间
监控windows磁盘空间,不是百分比. 当windows系统添加相应的windows模板后,会自动生成检测系统空间的监控项,在应用集(Filessystem)里面,Free disk space o ...
- datasets数据读取器
#切分数据集 img_dir = train_parameters['img_dir'] file_name = train_parameters['file_name'] df = pd.read_ ...
- contos7 使用zabbix监控物理磁盘状态实例
一.系统环境: 物理机:dell R640 操作系统:centos7 二.安装MegaCli 监控主要是通过MegaCli 软件获取到物理主机的read及硬盘相关状态信息.然后通过zabbix的自定义 ...
随机推荐
- Kafka写入流程和副本策略
Kafka写入流程: 1.producer 先从 zookeeper 的 "/brokers/.../state" 节点找到该 partition 的 leader 2. prod ...
- sqlsever存储过程学习笔记
1,创建数据表 use test create table money( id ,) primary key, money int, monetary_unity char ); 2,考虑到货币单位的 ...
- sprintf()函数使用异常
调试STM32F103,比如如下代码:使用springf函数,这个函数是把最后两个参数先格式化成字符串 ,输出到ERROR_STRING,如果他们合并的长度大于30会出现深情况? ] sprintf( ...
- 程序员必看:如何降低APP软件开发的成本?
程序员必看:如何降低APP软件开发的成本? 作为一名曾经的程序猿,一直想写一点东西给大家分享一下,今天终于动笔了,写写我们在开发的过程中怎样才能更快更好的进行开发,降低app开发成本.无论是个人开发者 ...
- 四 Android Capabilities讲解
本文转自:http://www.cnblogs.com/sundalian/p/5629429.html Android Capabilities讲解 1.Capabilities介绍 可以看下之 ...
- uiautomator+cucumber实现移动app自动化测试
前提 由于公司业务要求,所以自动化测试要达到以下几点: 跨应用的测试 测试用例可读性强 测试报告可读性强 对失败的用例有截图保存并在报告中体现 基于以上几点,在对自动化测试框架选型的时候就选择了uia ...
- 孤荷凌寒自学python第六十四天学习mongoDB的基本操作并进行简单封装3
孤荷凌寒自学python第六十四天学习mongoDB的基本操作并进行简单封装3 (完整学习过程屏幕记录视频地址在文末) 今天是学习mongoDB数据库的第十天. 今天继续学习mongoDB的简单操作, ...
- 孤荷凌寒自学python第十九天python函数嵌套与将函数作为返回对象及闭包与递归
孤荷凌寒自学python第十九天python函数嵌套与将函数作为返回对象及闭包与递归 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) Python函数非常的灵活,今天学习了python函数的以 ...
- go语言的学习网站
1)http://www.runoob.com/go/go-data-types.html 2)https://github.com/Unknwon/the-way-to-go_ZH_CN/blob/ ...
- Python——数据类型之list、tuple
本篇主要内容 • list初识 • list元素的访问 • list内部所有的方法 • tuple介绍和与list用法的比较 我觉得Python里面用的最多的就是List了,感觉好强大.他能存 ...