[系列文章] 資料庫的神奇魔法:Realtime Notification (PS)

~PowerShell~

繼上篇使用 Service Broker 實作 Realtime Event Notification

還有什麼方法可以做到即時監控呢?

就讓我們來瞧瞧如何運用 PowerShell 的強大能力即時監控誰 drop database

範例將使用以下 PS 語法註冊 CaptureDropDbEvents 來攔截 WMI Events

$eventQuery = "SELECT * FROM DROP_DATABASE"
$namespace = "root\Microsoft\SqlServer\ServerEvents\MSSQLSERVER"
Register-WmiEvent -SourceIdentifier "CaptureDropDbEvents" -Namespace $namespace -Query $eventQuery
while ($true) 
{
 $getEvents=Get-Event –SourceIdentifier "CaptureDropDbEvents" -ErrorAction SilentlyContinue
 if ($getEvents) 
 {
  for ($i=0; $i -lt $getEvents.Count; $i++) 
  {
   $getEvents[$i].SourceEventArgs.NewEvent | Select-Object $properties
   Remove-Event -EventIdentifier $getEvents[$i].EventIdentifier -ErrorAction SilentlyContinue
  }
 }
}

完成後的效果就像下面的範例

最後稍微修改就可以透過遠端監控站台集中管理嘍~

透過強大的 PowerShell 來即時監控是不是非常的簡單容易呢?

have fun ʕ•͡ᴥ•ʔ