国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > SQL Server > 正文

SQL Server自動化運維系列——監控跑批Job運行狀態(Power Shell)

2024-08-31 00:54:38
字體:
來源:轉載
供稿:網友
SQL Server自動化運維系列——監控跑批Job運行狀態(Power Shell)

需求描述

在我們的生產環境中,大部分情況下需要有自己的運維體制,包括自己健康狀態的檢測等。如果發生異常,需要提前預警的,通知形式一般為發郵件告知。

在上一篇文章中已經分析了SQL SERVER中關于郵件的基礎配置,本篇將利用此功能對多臺Server的跑批Job進行監控。

本篇實現

1、每天檢查服務器中的SQL Server跑批Job的運行狀態,如果跑批失敗,則發郵件告訴管理員失敗的明細

2、解決多臺服務器同時檢查

監控腳本

首先我們來解決第二個問題,關于多臺服務器的問題:

<1>一般監控我們需要監控很多臺服務器的JOb,所以對于服務器的量控制我們需要生成一個配置文件。

<computernames>        <computername>                wuxuelei-pc        </computername></computernames>

配置文件名字:computername.xml,這樣就解決很多服務器的問題,只需要在配置文件中增加就可以,因為我在本地測試,所以就配置了我的本地電腦

<2>利用Power Shell腳本,抓取出每臺服務器的Job的狀態,并且將Job的運行時間、運行狀態、描述以及錯誤的步驟等信息整理,形成匯總郵件。

腳本如下:

$server = "(local)"$uid = "sa"$db="master"$pwd="passWord"$mailPRfname = "TestMail"$recipients = "787449667@QQ.com"$subject = "老大,快去看看這些服務器的Job跑失敗了!"$computernamexml = "F:/PowerShell/發送郵件/computername.xml"function GetServerName($xmlpath){    $xml = [xml] (Get-Content $xmlpath)    $return = New-Object Collections.Generic.List[string]    for($i = 0;$i -lt $xml.computernames.ChildNodes.Count;$i++)    {        if ( $xml.computernames.ChildNodes.Count -eq 1)        {            $cp = [string]$xml.computernames.computername        }        else        {            $cp = [string]$xml.computernames.computername[$i]        }        $return.Add($cp.Trim())    }    $return}function GetAlterCounter($xmlpath){    $xml = [xml] (Get-Content $xmlpath)    $return = New-Object Collections.Generic.List[string]    $list = $xml.counters.Counter}function CreateAlter($message){    $SqlConnection = New-Object System.Data.SqlClient.SqlConnection     $CnnString ="Server = $server; Database = $db;User Id = $uid; Password = $pwd"     $SqlConnection.ConnectionString = $CnnString     $CC = $SqlConnection.CreateCommand();     if (-not ($SqlConnection.State -like "Open")) { $SqlConnection.Open() }         $cc.CommandText=            " EXEC msdb..sp_send_dbmail              @profile_name  = '$mailprfname'            ,@recipients = '$recipients'            ,@body = '$message'            ,@subject = '$subject'            "    $cc.ExecuteNonQuery()|out-null     $SqlConnection.Close();}$report = ""$item = New-Object Collections.Generic.List[string]$names = GetServerName($computernamexml)foreach($cp in $names){$srv=New-Object "Microsoft.SqlServer.Management.Smo.Server" "(local)"$item=$srv.jobserver.jobs | where-object {$_.lastrunoutcome -eq "Failed" -and $_.isenabled -eq $TRUE} |  select OriginatingServer,name,Description,lastrunoutcome,lastrundate,JobSteps  #Write-Host $item.JobSteps.name $report += " 服務器:"+$item.OriginatingServer+"  Job名稱:"+$item.name+"  Job描述:"+$item.Description +"  Job最后運行狀態:"+$item.lastrunoutcome  +"  Job最后運行時間:"+$item.lastrundate +"  Job失敗的步驟名稱:"+$item.JobSteps.name  + "`n"}#生產警告CreateAlter $report

通過上述腳本,生成跑批任務,就可以定時監控多臺服務器的Job了。

當然,建議放在所有Job的運行完成之后,進行檢測。

上述代碼中,有兩個技術點:

1、需要自己配置SQL Server郵件代理,具體方法參照我上一篇:點擊此;

2、需要自己配置跑批計劃,方法自己網上搜,很簡單。

本篇所監控的Job狀態,利用的是上一篇我們創建的Job,跑批肯定失敗的。

效果圖如下

點擊來看一下郵件明細內容:

給出的失敗信息還是挺詳細的。

另外,因為我只建立了一個失敗的Job,所以郵件中只是發送一個條。

其實關于此監控,還有一些狀態是可以監控的:

1、比如:可以指定服務器上的部分Job進行監控

2、監控Job的狀態:失敗或者正常等

以上內容,可以自己根據需要靈活配置。

結語

本篇就列舉了一下利用PowerShell實現自動化運維和檢測。算作拋磚引玉了吧,自己另有需求可以自己靈活實現。

另外關于Job,一般除了SQL Server的Agent會存在,還有一部分是操作系統的計劃任務也需要檢測,我們后面的文章解決此問題。

關于SQL Server自動化運維和檢測的內容很廣泛,其中很多都是從日常的經驗中出發,一步步的從手動到自動的過程。

后面的文章,我們將會更深入關于SQL Server的自動化優化運維進行分析。有興趣的童鞋,可以提前關注。

文章的最后,給出該系列其它的一些監控方式,皆為原創

SQL Server需要監控哪些計數器

SQL Server自動化運維系列——監控性能指標腳本(Power Shell)

SQL Server自動化運維系列——監控磁盤剩余空間及SQL Server錯誤日志(Power Shell)

SQL Server自動化運維系列——關于郵件通知那點事(.Net開發人員的福利)

如果您看了本篇博客,覺得對您有所收獲,請不要吝嗇您的“推薦”。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 永清县| 全椒县| 宣威市| 雅安市| 巴林左旗| 囊谦县| 平泉县| 德清县| 师宗县| 鲁甸县| 酒泉市| 阿克苏市| 屯留县| 青龙| 保康县| 招远市| 松溪县| 通城县| 寿宁县| 察哈| 资中县| 阿拉善右旗| 罗平县| 北川| 得荣县| 长岛县| 兴业县| 灵山县| 商洛市| 伊宁县| 楚雄市| 将乐县| 泗水县| 洞头县| 英吉沙县| 青州市| 永州市| 钦州市| 周口市| 龙州县| 周口市|