Mettre à jour et appliquer des updates cumulatives a plusieurs instances en quelques minutes

Cette image a un attribut alt vide;  son nom de fichier est dbatools-logo-1.png

L’application de correctifs à SQL Server peut parfois prendre du temps, en particulier lorsque plusieurs serveurs doivent être corrigés. La connexion à distance à chaque boîte pour exécuter l’assistant de mise à jour est fastidieuse, et si vous avez plusieurs correctifs à appliquer, vous allez y passer beaucoup de temps.

Heureusement, le module dbatool Powershell rend ce processus beaucoup plus facile! En fait, une fois que vous l’avez compris, utiliser Update-DbaInstance pour patcher vos serveurs SQL devient très simple. Mais, comprendre cela peut être un peu déroutant,

 Les plus gros problèmes que j’ai rencontrés ont été la configuration d’un emplacement central de mise à jour et l’utilisation d’un identifiant pour y accéder.

Voici le code PowerShell pour ceux qui aimeraient jouer à la maison.

$ServerName = "DESKTOP-95KKMMH\REPLICA","SDESKTOP-95KKMMH\DISS","DESKTOP-95KKMMH"

$UserName = Get-Credential

$PathCU = "\\SERVEUR1\SQL2019\correctif\SQLServer2019-KB4577194-x64.exe"

$VersionCU = "2019RTM"

Update-DbaInstance -ComputerName $ServerName -Restart -Version $VersionCU -Path $PathCU -Credential $UserName -Confirm:$false

Et voilà, toutes les mises à jour étaient en même temps, avec des cases dans PowerShell ISE me montrant le statut de chacune. C’était magique.

Pour ceux d’entre vous qui connaissent encore moins PowerShell que votre humble hôte, laissez-moi vous expliquer ce qui se passe.

  • Les choses avec les signes $ sont des variables. Je déclare simplement ce qu’ils sont. Ils ne sont pas obligatoires – vous pouvez les transmettre en tant que valeurs littérales à la commande à la fin du script. Je l’ai juste fait pour la lisibilité.
  • Get-Credential est une applet de commande qui crée un objet d’informations d’identification pour un nom d’utilisateur et un mot de passe spécifiques. Ce que cela signifie pour vous, c’est que lors de son exécution, vous recevrez une invite vous permettant de saisir un identifiant et un mot de passe pouvant être utilisés pour exécuter les mises à jour cumulatives sur tous les serveurs. C’est bien car vous ne devez saisir cette information qu’une seule fois, pas une fois pour chaque serveur.
  • ComputerName est explicite, mais encore une fois, vous pouvez lui transmettre PLUSIEURS valeurs. C’est la clé de la vitesse.
  • Redémarrer indique de redémarrer le serveur une fois la mise à jour cumulative appliquée. C’est vrai – la durée de 12 minutes comprenait les redémarrages!
  • La version est une sorte de code transmis à UpdateDbaInstance. Il peut également inclure des service packs (c’est-à-dire «2019RTM») mais 2019 n’a pas de service packs, vous utilisez donc «RTM» dans cet espace.
  • Path est le répertoire dans lequel vous avez le fichier .exe que vous avez téléchargé à partir de Microsoft pour appliquer la mise à jour cumulative. Placez-le quelque part où vous pouvez y accéder et NE le renommez PAS. Si vous faites cela ne fonctionnera pas car UpdateDbaInstance appelle une autre cmdlet qui sait ce que ce nom de fichier doit être basé sur ce que vous avez transmis pour Version.
  • Credential utilise tout ce qui a été saisi pour Get-Credential. Si vous avez noté cette information, rien de tout cela ne fonctionnera. Cela pourrait être votre point de défaillance unique.
  • Confirmer est défini sur false, car je ne souhaite pas cliquer sur « Êtes-vous sûr? » type d’invite. Vivez dangereusement, mes amis.

Si vous avez toujours des appréhensions à propos de tout cela, vous pouvez d’abord exécuter tout cela avec -WhatIf ajouté à la fin de la ligne Update-DbaInstance. Cela peut aider à identifier au préalable les erreurs telles que les problèmes de connectivité sans rien faire.

Et voila Finalement le kb4552255 CU5 a été applique a toutes mes instances dans quelques minu