使用powershell 监控sqlserver 一些状态
需要监控基本的数据库参数,如恢复模型,页面验证,自动关闭,自动收缩,数据库所有者,自动创建统计启用,数据库创建日期等。因为是windows系统需要接住poweshell。
我们的要求是,所有数据库都应该处于完全恢复模式,并且应该被监控。
此外,我添加了其他重要参数,如AutoShrink, AutoClose等。
脚本效果输出如下:

#Change value of following variables as needed $ServerList = Get-Content "D:SCMSSQLServer.txt" $OutputFile = "D:SCMSSQLRecoverModel_MDA_$((Get-Date).ToString('ddMMyyyy_hhmm')).htm" $HTML = '' ################################################################################# Author: Sandeep Charaya : http://ilearnsql.wordpress.com/# Date: 16.06.2020# Comment: Script to obtain the disk space on remote servers################################################################################ $HTML += "" $HTML | Out-File $OutputFile
" [System.Reflection.Assembly]::LoadWithPartialName('Microsoft.SqlServer.SMO') | out-null ForEach ($ServerName in $ServerList) { $HTML += " Date DatabaseName RecoveryModel PageVerify AutoClose AutoShrink DatabaseOwner AutoCreateStatisticsEnabled DB CreateDate " $SQLServer = New-Object ('Microsoft.SqlServer.Management.Smo.Server') $ServerName Foreach($Database in $SQLServer.Databases | where-object {$_.Name -ne "tempdb" -and $_.Name -ne "master" -and $_.Name -ne "ReportServerTempDB" -and $_.Name -ne "ReportServer$SGSI2W0256TempDB" -and $_.Name -ne "ReportServer$SGSI2W0256"}) { $DatabaseName=$Database.Name $SimpleRecoveryModel=$Database.RecoveryModel $PageVerify=$Database.pageverify $AutoClose=$Database.autoclose $Autoshrink=$Database.autoshrink $DBOwner=$Database.owner $AutoCreateStatisticsEnabled=$Database.AutoCreateStatisticsEnabled $CreateDate=$Database.CreateDate $EndDate=Get-Date IF ($SimpleRecoveryModel -eq 'simple') { $color1 = 'red' } ELSE {$color1 = 'Green'} IF ($PageVerify -ne 'Checksum') { $color2 = 'red' } ELSE {$color2 = 'Green'} IF ($AutoClose -eq 'True') { $color3 = 'red' } ELSE {$color3 = 'Green'} IF ($Autoshrink -eq 'True') { $color4 = 'red' } ELSE {$color4 = 'Green'} IF ($DBOwner -eq "" -Or $DBOwner -Like "*sadm*") { $color5 = 'yellow' } ELSE {$color5 = 'Green'} IF ($AutoCreateStatisticsEnabled -eq 'True') { $color6 = 'green' } ELSE {$color6 = 'red'} IF ( $color1 -eq 'red' -or $color2 -eq 'red' -or $color3 -eq 'red' -or $color4 -eq 'red' -or $color5 -eq 'red' -or $color6 -eq 'red') { $HTML += " $ServerName " } } } $HTML += " $(get-date) $($Database.Name) $($Database.RecoveryModel) $($Database.pageverify) $($Database.autoclose) $($Database.autoshrink) $($Database.owner) $($Database.AutoCreateStatisticsEnabled) $($Database.createdate)
adm_d14_jxpp_wx_robot_group_task_send_msg_di