Pour voir le script, cliquer sur lire la suite.
Max # FCI per node = CEILING (# total FCI / # physical nodes)
# sendmail function
function sendmail{
param($msgText)
Write-Host « Sending Email »
# ***Change to your SMTP server name
$smtpServer = « your.smtp.server.com »
$msg = new-object Net.Mail.MailMessage
$smtp = new-object Net.Mail.SmtpClient($smtpServer)
# ***Change « From », « To » and « Subject » fields to your own
$msg.From = « SQLBalanceMonitor@YourDomainName.com »
$msg.To.Add(« DBA@YourDomain.com »)
$msg.subject = « Too many SQL instances on $env:COMPUTERNAME »
$msg.body = $msgText
# Sending email
$smtp.Send($msg)
}
# main logic
$nTotSQLInst = Get-WMIObject Win32_Service | where {($_.Name -LIKE « MSSQL$* ») -or ($_.Name -eq « MSSQLSERVER ») } | Select -ExpandProperty Name
$nWSFCNode = get-clusterNode | select-object Name
$nSQLInst = Get-WMIObject Win32_Service -Filter {Name LIKE ‘%MSSQL$%’ and State LIKE ‘Running’} | Select -ExpandProperty Name
$maxSQLInst = [math]::ceiling($nTotSQLInst.count/$nWSFCNode.count)
If ( $nSQLInst.count -gt $maxSQLInst ) {
$CR = « `r`n »
$InstList = $null
for ($i=0; $i -lt $nSQLInst.count; $i++) {$InstList = $InstList + $nSQLInst[$i] + $CR}
$msgText = « There are » + $nSQLInst.count + » SQL instances in node $env:COMPUTERNAME : » +
$CR + $CR + $InstList + $CR + « The max # of instances allowed is $maxSQLInst »
sendmail($msgText)
}
C:apps>powershell .SQLInstBalMonitor.ps1
Laisser un commentaire