Surveiller SQL Server Agent with Powershell

bonjour
Dans Cet article je vous présente du code PowerShell
le code il montre comment Surveiller l’agent SQL Server pour s’assurer qu’elle est en cours d’exécution sur des multi serveurs .
Il y a quelques mois, une situation intéressante s’est produite. SQLAgent s’est arrêté et il a fallu un certain temps avant de réaliser ce qui s’était passé. Heureusement, il ne s’agissait pas d’un problème critique sur ce serveur, mais cela aurait pu être un problème majeur sur d’autres serveurs de production. Cela m’a fait poser une question intéressante. comment surveillez-vous SQL Server, en particulier SQLAgent sur un Parc SQL alors c’est a travers Powershell
Commençons par résoudre le problème que je viens d’évoquer en définissant un fichier texte contenant les listes de serveurs à surveiller. Ouvrez simplement un éditeur de texte, tapez les adresses IP ou les noms de votre serveur, ou un mélange des deux, puis enregistrez le fichier dans votre répertoire local. Dans mon cas, j’utilise c: \servers.txt, par exemple:

$servers=get-content "c:\servers.txt"
$servers

Pour chaque objet renvoyé à partir de la variable $servers, nous allons le placer dans la variable $server, puis vérifier le serveur à la recherche d’instances d’agent SQL Server en statut Agent Stopped.
Dans Powershell, vous utilisez le caractère | pour indiquer que vous souhaitez Powershell transmette les valeurs de la commande de gauche à celle de droite. Voici ce que le script ci-dessus fait:
Nous demandons d’abord à Powershell d’obtenir les valeurs WMIobject pour tous les services win32 et nous passons le nom du serveur dans le paramètre –computername.
Ensuite, nous prenons les valeurs de l’appel get_wmiobject et on sélectionne uniquement le nom et les valeurs d’état renvoyées par la commande, car ce sont les seules sur lesquelles nous souhaitons travailler dans notre exemple.
Nous filtrons ces résultats de 2 manières. Premièrement, nous utilisons une recherche générique et l’opérateur –like sur les noms ($ _. Name) pour tout nom commençant par « SQLAgent » ou commençant par « SQL » et se terminant par « Agent » et qui a (-match ) un état « arrêté ».
Enfin, nous prenons nos résultats filtrés et demandons à Powershell de générer ces informations sous forme de chaîne. La dernière étape de la sortie sur une chaîne devient importante plus tard.
Maintenant, si nous nous arrêtions là, vous pourriez surveiller manuellement les serveurs de votre choix et voir quels services étaient arrêtés. Bien que cela soit modérément utile, il serait bien que cela puisse fonctionner sur un ou plusieurs serveurs distants et le démarrer automatiquement a travers start-service . Laissons cela en modifiant légèrement le code ci-dessus.

$servers=get-content "c:\servers.txt"

foreach($server in $servers)
{
$statut=get-wmiobject win32_service -computername $server |
  select name,state |
  where {$_.name -like "SQLAGENT*" -or $_.name -like "SQL*AGENT" `
   -and $_.state -match "Stopped"}
   $name=$statut.name
  }    

if ($statut.state -match "stopped")
{
start-service -Name  $name
}

 bonne surveillance

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur la façon dont les données de vos commentaires sont traitées.