[技術探討] SQL Server 硬碟空間管理-簡訊通知

SQL Server

為避免當資料庫檔案空間不足時,造成許多不必要的麻煩。就一起來看看SQL Server有什麼小語法可方便直接作監控管理吧!

簡訊的運用除了企業用戶的行銷推廣外,有很大一部份會運用在資訊通知上。由於簡訊系統中包含了手機號碼、和簡訊內容等個資,有些對個資安全較敏感的行業別,會要求廠商將簡訊系統建置在企業內部。也就是說,不論是AP或是資料庫的管理上,很多時候都僅能有賴於企業內部的IT部門作代管。

每間公司的IT部門在代管監控的項目與程度上,當然有所不同。畢竟系統不在廠商內部,有些狀況未必能及時掌控。筆者就曾經在某個連續假日的夜晚,接獲客戶的電話告知無法正常運作的通知。在一連串的電話確認與SOP操作皆無法排除異常的狀況下,只好前往客戶端機房直接作確認。

由於系統在客戶端已運作一段時日,在網路連線正常、主機重啟、應用程式重啟都無效的情況下,幾乎可排除系統自身的問題了。還好很快的發現..原來是因為資料庫檔案與其他系統的資料庫檔案共用同一個磁碟空間,在其他系統發生非預期的情況下,硬碟空間被用完成造成資料庫無法寫入與讀取進而造成系統異常。

其實要避免像這樣的事情發生,當然有賴於平時的定時清檔與維護。但像這樣的案例中,由於是與其他廠商的系統共用資料庫,且一旦權限被收回主機又由第三方代管,在行為與操作非我們可控制的情況下,這邊要介紹幾個SQL的系統檢視表,除了可查看執行個體中所有資料庫的檔案資訊和檔案的使用空間,也可與 Database Mail、SQL Server Agent搭配,完成「空間不足」時的提醒通知。

 

先介紹幾個相關的系統檢視表:

相關系統檢視表 說明
sys.master_files 記錄整個執行個體中所有資料庫的檔案資訊。
sys.dm_db_file_space_usage 記錄單一資料庫的每一個檔案總使用空間與內部使用情形。
sys.dm_db_log_space_usage 記錄單一資料庫交易記錄檔的總使用空間與內部使用情形。
sys.dm_os_volume_stats 傳回儲存指定資料庫和檔案所在之作業系統磁碟區 (目錄) 的相關資訊。 可用來檢查實體磁碟機的屬性,或傳回目錄可用空間的資訊。
  • 執行下列語法,查看執行個體中所有資料庫檔案資訊。

SQL Server

確認資料庫檔案所在位置於D:\ 中。

SQL Server

  • 執行下列語法,可觀察特定資料庫的檔案空間使用狀況。

SQL Server

確認資料庫檔案大小。

SQL Server

  • 建立「空間不足」的提醒通知
  1. 先將SQL Server的Database Mail帳戶和設定檔設定完成。

 

  1. 執行下列語法。

 

為測試方便,先將通知時機的百分比視目前硬碟空間狀況作設定。

例如目前D:\槽總空間為550G,可用空間為400G (50%),可用空間為72%,因此設定小於80% 時發出通知。

要注意的是,若未指定特定資料庫,則會將所有資料庫檔案所在之作業系統磁碟區一併作檢查,在收到通知時可能會造成不必要的誤判。

可先執行系統檢視表:SELECT  *  FROM  sys.master_files 確認欲執行的資料庫 database_id。

SQL Server

確認收到Email通知。

SQL Server

3.再設定於SQL Server Agent的排程作業中,即大功告成!!

 

若擔心發Email通知可能無法被及時注意到,這邊要介紹一個詮力簡訊系統的「Email轉發簡訊功能」。由於這次的場景設定是客戶端的簡訊系統因SQL異常造成無法發送簡訊,但可以透用SQL的Database Mail以寄送外部信箱的方式,送Email至詮力的Mail Server中,以透過詮力內部自己的簡訊系統來作Alert簡訊的通知。

設定方式其實很簡單。就是將上述的@recipients 參數設定,改成詮力簡訊平台的接收信箱- [email protected],符合詮力的Email發簡訊規則後(如下圖)。

SQL Server

鏘!鏘! 立馬收到簡訊通知囉!!

SQL Server

是不是簡單即時又方便呢~~

其實不止是「資料庫檔案空間不足」的通知,舉凡所有透過Email來作告警通知的監控,都可以透過這個設定達到以簡訊作即時的通知!

 

Comments

No comments yet. Why don’t you start the discussion?

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料