1. 程式人生 > >[原創]SSIS-WMI 資料讀取器任務:監控物理磁碟空間

[原創]SSIS-WMI 資料讀取器任務:監控物理磁碟空間

背景:

      隨著時間的推移,我們的DW會越來越大,也就意味著磁碟空間會越來越小,那如果哪一天留意不當,就會造成磁碟空間的不足而導致ETL失敗,最終影響我們的系統的資料正確性和使用,更嚴重的有可能導致物理磁碟損壞,所以對於物理磁碟空間的監控必不可少。

     下面的方法就是利用SSIS中的WMI資料讀取器任務去每天查詢物理磁碟的空餘空間,當不足時發郵件以提示管理員。

image

步驟:

1、新建一個SSIS包,從工具欄上拖拉一個[WMI 資料讀取任務]到控制流,雙擊編輯元件屬性

新建變數

變數名 型別 用途
DiskUsageRet string
用於儲存結果集
Flag int 用於判斷磁碟空間的剩餘空間是否不滿足要求

在[WmiConnection]欄,新建個WMI連線管理器

image

在[服務和名稱空間]選項中,[伺服器名稱]輸入你要監視的伺服器的\\ + IP地址,名稱空間預設即可

P.S:如果[伺服器名稱]為本機地址,則必須使用windows身份驗證,如果使用使用者憑據,則有可能會出現如下圖錯誤,如果是遠端的伺服器地址,則需要使用相應的使用者名稱和密碼登入

1

配置完畢後點擊測試,看是否驗證通過

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

image

關鍵屬性講解:

WmiConnection 連線WMI伺服器物件,需要我們建立一個WMI連線
WqlQuerySourceType 查詢語句存放型別(地方)
WqlQuerySource 查詢語句,根據存放型別的不同,這裡會有相應的變換,如果存放型別選擇檔案,這裡就需要選擇對應的語句檔案
OutputType 查詢結果輸入形式。
資料表:一個完整的資料表結果集
屬性名稱和值:以一個屬性名稱和一個值一行的結果集形式返回,如:FreeSpace, 13587701760
屬性值:單純範圍查詢欄位的值集合
OverWriteDestination 寫入目標的方式。
保留原始值:保留目標中的原始值
覆蓋目標:將結果覆蓋目標中的值
追加到目標:將結果值追加到目標
DestinationType 目標型別。
變數:結果儲存到變數
檔案連線:將結果儲存到檔案
Destination 目標物件
根據DestinationType不同,設定不同

3、將我們的查詢結果儲存到變數之後,我們就可以利用指令碼元件,判斷變數中的結果,以檢視磁碟查詢的空間是否滿足要求。

image

編輯指令碼,其中的main方法如下:

public void Main()
{
double unit = 1024 * 1024 * 1024;
      //查詢的space是以b為單位的,必須將其換算成G,這裡判斷是否小於20G
      double diskspace = Convert.ToDouble(Dts.Variables["DiskUsageRet"].Value) / unit / 20;
      if (diskspace < 1)
      {
            Dts.Variables["Flag"].Value = 1;
            // MessageBox.Show("空間不足20G", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
      }
      else
      {
            Dts.Variables["Flag"].Value = 0;
            // 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", "[email protected]", "伺服器C盤空間不足", "伺服器C盤空間不足,請檢查");
    SmtpClient smtp = new SmtpClient("smtp.126.com");
    smtp.Credentials = new NetworkCredential("xxxx@126.com", "密碼");
    smtp.Send(mymail);
    Dts.TaskResult = (int)ScriptResults.Success;
}

最終但我們的空間不滿足檢查要求的時候,我們就可以收到郵件提醒了

image

相關推薦

[原創]SSIS-WMI 資料讀取任務監控物理磁碟空間

背景:       隨著時間的推移,我們的DW會越來越大,也就意味著磁碟空間會越來越小,那如果哪一天留意不當,就會造成磁碟空間的不足而導致ETL失敗,最終影響我們的系統的資料正確性和使用,更嚴重的有可

raid資料恢復案例之伺服器Raid5磁碟陣列資料恢復過程

伺服器資料恢復使用者:江西省某大學伺服器資料恢復故障描述:使用者使用的是曙光某型號16盤位光纖儲存櫃,底層儲存介質為16塊600GB 光纖磁碟,做成兩組RAID5磁碟陣列,每組raid中有7塊磁碟,另兩塊磁碟做成全域性熱備磁碟。第一組RAID磁碟陣列分有3個LUN,分別分配給

VBox增加虛擬磁碟空間上限(虛擬系統為Linux)

執行以下命令指定vdi虛擬磁碟空間新上限(此步驟需要在使用vdi磁碟檔案的虛擬機器關閉狀態下執行,單位MB): C:\Program Files\Oracle\VirtualBox>vboxmanage modifyhd D:/vm/spark/spark.vdi --resize

索引的缺點(1)需要佔用磁碟空間

索引的其中一個缺點就是需要佔用磁碟空間。 這個缺點是其他 優點的基礎,因為任何一種機制,不可能只有優點,而沒有缺點,正因為建立索引,就是把排序後組織成B樹的資料,放到磁碟上,才有了索引,才有可能運用索引的各種優勢。 既然是索引,就一定會佔用空間,那麼這裡的主要問題就成了如何

圖片播放(八)讀取資料夾中的圖片

採用連結串列的方式儲存圖片檔案的格式資訊,檔名和大小。     重要結構體: /* 圖片檔案型別 */ typedef enum image_type { IMAGE_TYPE_BMP, IMAGE_TYPE_JPG, IMAGE_TYPE_PNG,

圖片播放(四)圖片資料提取和顯示

display###############     fb.c                            

Cris 的 Python 資料分析筆記 05Pandas 資料讀取,索引,切片,計算,列整合,過濾,最值

Pandas 資料讀取,索引,切片,計算,列整合,過濾,最值 文章目錄 Pandas 資料讀取,索引,切片,計算,列整合,過濾,最值 1. read_csv 函式 2. DataFrame 資料結構的常用

Quartz擴茲初級實驗定時--任務排程

pom.xml:依賴  <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/200

TensorFlow全新的資料讀取方式Dataset API入門教程

Dataset API是TensorFlow 1.3版本中引入的一個新的模組,主要服務於資料讀取,構建輸入資料的pipeline。 此前,在TensorFlow中讀取資料一般有兩種方法: 使用placeholder讀記憶體中的資料 使用queue讀硬碟中的資料(關於這種

tensorflow 16資料讀取(以cifar10_input.py為例)

資料讀取概述 TensorFlow程式讀取資料一共有3種方法: 供給資料(Feeding): 在TensorFlow程式執行的每一步, 讓Python程式碼來供給資料。 從檔案讀取資料: 在TensorFlow圖的起始, 讓一個輸入管線從檔案中讀取資料。 預載

【TensorFlow】TFRecord資料集的製作讀取、顯示及程式碼詳解

在跑通了官網的mnist和cifar10資料之後,筆者嘗試著製作自己的資料集,並儲存,讀入,顯示。 TensorFlow可以支援cifar10的資料格式, 也提供了標準的TFRecord 格式。  tensorflow 讀取資料, 官網提供了以下三種方法: 1 Feeding: 在

SpringMVC總結之資料轉換(例時間引數轉換

  1.前言 SpringMVC 通過反射機制對處理方法的簽名進行分析,並將請求資訊繫結到處理方法的引數中,在請求訊息到達處理方法期間,SpringMVC 還會完成資料轉換,資料格式化和資料檢驗等工作; 2.Converter轉換器 2.1 Spring在org.fra

原創】大資料基礎之Spark(7)spark讀取檔案split過程(即RDD分割槽數量)

spark 2.1.1 spark初始化rdd的時候,需要讀取檔案,通常是hdfs檔案,在讀檔案的時候可以指定最小partition數量,這裡只是建議的數量,實際可能比這個要大(比如檔案特別多或者特別大時),也可能比這個要小(比如檔案只有一個而且很小時),如果沒有指定最小partition數量,初始化完成的

從資料庫讀取日期型資料的錯誤記錄argument type mismatch

當我從資料庫查詢一條帶有日期型欄位的資料時,報了這個錯誤:         java.lang.IllegalArgumentException: argument type mismatch 這是因為從資料庫取出來是date型別的值,而我卻用String型別的物件去接的,

TensorFlow基礎3資料讀取的三種方式

‘在講述在TensorFlow上的資料讀取方式之前,有必要了解一下TensorFlow的系統架構,如下圖所示: TensorFlow的系統架構分為兩個部分: 前端系統:提供程式設計模型,負責構造計算圖; 後端系統:提供執行時環境,負責執行計算圖。

tensorflow爬坑行資料讀取

tensorflow的資料讀取 tensorflow在讀取像imagenet這種大量影象資料,不能一次性load進記憶體時有幾個坑,Mark一記,以助後來者。關於多GPU和分散式,本文只討論資料並行方式,即每個GPU上面執行一個網路,稱為tower。

tensorflow學習筆記(五)TensorFlow變數共享和資料讀取

  這一節我們提及了三個內容:變數共享、執行緒和佇列和資料讀取,這些都是TensorFlow官方指導中的內容。會在程式中經常遇到所以放在一起進行敘述。前面都是再利用已有的資料進行tensorflow的學習,這一節我們要學習怎麼從檔案中讀取我們需要的各類資料。

《深入理解Spark核心思想與原始碼分析》——SparkContext的初始化(伯篇)——執行環境與元資料清理

《深入理解Spark:核心思想與原始碼分析》一書第一章的內容請看連結《第1章 環境準備》 《深入理解Spark:核心思想與原始碼分析》一書第二章的內容請看連結《第2章 SPARK設計理念與基本架構》 由於本書的第3章內容較多,所以打算分別開闢四篇隨筆分別展現。本文展現第3章第一部分的內容: 第3章

tensorflow 1.0 學習十圖詳解tensorflow資料讀取機制

本文轉自:https://zhuanlan.zhihu.com/p/27238630 在學習tensorflow的過程中,有很多小夥伴反映讀取資料這一塊很難理解。確實這一塊官方的教程比較簡略,網上也找不到什麼合適的學習材料。今天這篇文章就以圖片的形式,用最簡單的語言,為大家詳細解釋一下tensorflow的

原創】zynq-7010下運用I2C匯流排完成對LSM303D感測器的資料讀取

介紹 這是本人第一次寫部落格,我的畢設在用FPGA去讀取LSM303D感測器的中的三軸的磁場強度資料,這也是我第一次用zynq-7010板子,第一次接觸Vivado,我用了將近兩個月的時間摸索,中間經歷了很多失敗的嘗試,還好最近有了突破,因為目前網上基本沒有關