Partager via


Installer SQL Server avec Configuration de l'État Désiré de PowerShell

Avez-vous déjà parcouru l’interface d’installation de SQL Server en sélectionnant les mêmes boutons, en entrant les mêmes informations et en ne lui donnant pas une seconde réflexion ? L’installation s’est terminée, mais vous avez oublié de spécifier le groupe DBA dans le rôle sysadmin . Ensuite, vous deviez effectuer ces opérations :

  • Passer en mode utilisateur unique.
  • Ajoutez les utilisateurs ou groupes appropriés.
  • Sauvegardez SQL Server en mode multiutilisateur.
  • Test.

Ce qui est pire, c’est maintenant que la confiance de toute l’installation est ébranlée. « Qu’est-ce que j’ai oublié ? » tu pourrais te demander.

Découvrez powerShell Desired State Configuration (DSC). En utilisant DSC, vous créez un modèle de configuration que vous pouvez réutiliser sur des centaines et des milliers de serveurs. Selon la build, vous devrez peut-être ajuster quelques-uns des paramètres de configuration. Mais ce n’est pas un problème significatif, car vous pouvez conserver tous les paramètres standard en place. Il élimine la possibilité que vous oubliez d’entrer un paramètre important.

Cet article explore la configuration initiale d’une instance autonome de SQL Server 2017 sur Windows Server 2016 à l’aide de la ressource DSC SqlServerDsc . Certaines connaissances préalables de DSC sont utiles, car nous n’explorerons pas le fonctionnement de DSC.

Remarque

Cet article fait référence à PowerShell 5.1, qui est la version par défaut de PowerShell installée avec Windows Server 2016, 2019 et 2022.

Les éléments suivants sont requis pour cette procédure pas à pas :

  • Machine qui exécute Windows Server 2016.
  • Support d’installation de SQL Server 2017.
  • Ressource DSC SqlServerDsc.

Conditions préalables

Dans la plupart des cas, DSC est utilisé pour gérer les conditions préalables requises. Mais pour les besoins de cette démonstration, nous gérons manuellement les prérequis.

Installer la ressource DSC SqlServerDsc

Téléchargez la ressource DSC SqlServerDsc depuis la PowerShell Gallery à l’aide de l’applet de commande Install-Module.

Remarque

Vérifiez que PowerShell s’exécute en tant qu’administrateur pour installer le module.

Install-Module -Name SqlServerDsc

Obtenez le média d’installation de SQL Server 2017

Téléchargez le support d’installation de SQL Server 2017 sur le serveur. Nous avons téléchargé SQL Server 2017 Enterprise à partir d’un abonnement Visual Studio et copié l’ISO dans C:\en_sql_server_2017_enterprise_x64_dvd_11293666.iso.

À présent, l’ISO doit être extrait dans un répertoire :

New-Item -Path C:\SQL2017 -ItemType Directory
$mountResult = Mount-DiskImage -ImagePath 'C:\en_sql_server_2017_enterprise_x64_dvd_11293666.iso' -PassThru
$volumeInfo = $mountResult | Get-Volume
$driveInfo = Get-PSDrive -Name $volumeInfo.DriveLetter
Copy-Item -Path ( Join-Path -Path $driveInfo.Root -ChildPath '*' ) -Destination C:\SQL2017\ -Recurse
Dismount-DiskImage -ImagePath 'C:\en_sql_server_2017_enterprise_x64_dvd_11293666.iso'

Créer la configuration

Paramétrage

Créez la fonction de configuration qui sera appelée pour générer les documents MOF (Managed Object Format) :

Configuration SQLInstall
{...}

Modules

Importez les modules dans la session active. Ces modules indiquent au document de configuration comment générer les documents MOF. Ils indiquent également au moteur DSC comment appliquer les documents MOF au serveur :

Import-DscResource -ModuleName SqlServerDsc

Ressources

.NET Framework

SQL Server s’appuie sur le .NET Framework. Nous devons donc nous assurer qu’il est installé avant d’installer SQL Server. La ressource WindowsFeature est utilisée pour installer la fonctionnalité Windows Net-Framework-45-Core :

WindowsFeature 'NetFramework45'
{
     Name = 'Net-Framework-45-Core'
     Ensure = 'Present'
}

SqlSetup

La ressource SqlSetup est utilisée pour indiquer à DSC comment installer SQL Server. Les paramètres requis pour une installation de base sont les suivants :

  • InstanceName. Nom de l'instance. Utilisez MSSQLSERVER pour une instance par défaut.
  • Fonctionnalités. Fonctionnalités à installer. Dans cet exemple, nous installons uniquement la fonctionnalité SQLEngine .
  • SourcePath. Chemin d’accès au support d’installation SQL. Dans cet exemple, nous avons stocké le support d’installation SQL dans C:\SQL2017. Un partage réseau peut réduire l’espace utilisé sur le serveur.
  • SQLSysAdminAccounts. Utilisateurs ou groupes qui doivent être membres du rôle sysadmin . Dans cet exemple, nous accordons au groupe Administrateurs local l'accès sysadmin.

Remarque

Nous vous déconseillons cette configuration dans un environnement à haute sécurité.

Une liste complète et une description des paramètres disponibles sur SqlSetup sont disponibles dans le référentiel GitHub SqlServerDsc.

La ressource SqlSetup installe uniquement SQL Server et ne conserve pas les paramètres appliqués. Par exemple, si sqlSysAdminAccounts est spécifié au moment de l’installation. Un administrateur peut ajouter ou supprimer des connexions à ou à partir du rôle sysadmin . Mais la ressource SqlSetup n’est pas affectée. Si vous souhaitez que DSC applique l’appartenance au rôle sysadmin , utilisez la ressource SqlServerRole .

Terminer la configuration

Configuration SQLInstall
{
     Import-DscResource -ModuleName SqlServerDsc

     node localhost
     {
          WindowsFeature 'NetFramework45'
          {
               Name   = 'NET-Framework-45-Core'
               Ensure = 'Present'
          }

          SqlSetup 'InstallDefaultInstance'
          {
               InstanceName        = 'MSSQLSERVER'
               Features            = 'SQLENGINE'
               SourcePath          = 'C:\SQL2017'
               SQLSysAdminAccounts = @('Administrators')
               DependsOn           = '[WindowsFeature]NetFramework45'
          }
     }
}

Générer et déployer

Compiler la configuration

Pointez la source du script de configuration :

. .\SQLInstallConfiguration.ps1

Exécutez la fonction de configuration :

SQLInstall

Un répertoire appelé SQLInstall est créé dans le répertoire de travail. Il contient un fichier appelé localhost.mof. Examinez le contenu du MOF, qui montre la configuration DSC compilée.

Déployer la configuration

Pour démarrer le déploiement DSC de SQL Server, appelez l’applet de commande Start-DscConfiguration . Les paramètres suivants sont fournis à l’applet de commande :

  • Chemin d’accès. Chemin d’accès au dossier qui contient les documents MOF à déployer. par exemple C:\SQLInstall.
  • Attendez. Attendez la fin du travail de configuration.
  • Force. Remplacez toutes les configurations DSC existantes.
  • Verbeux. Afficher la sortie détaillée. Il est utile lorsque vous envoyez (push) une configuration pour la première fois pour faciliter la résolution des problèmes.
Start-DscConfiguration -Path C:\SQLInstall -Wait -Force -Verbose

À mesure que la configuration s’applique, le résultat détaillé vous montre ce qui se passe. Tant qu'aucune erreur (texte rouge) n'est levée, et que l'opération « Invoke CimMethod » apparaît à l'écran, SQL Server devrait alors être installé.

Valider l’installation

DSC

Les applets de commande Test-DscConfiguration peuvent déterminer si l’état actuel du serveur répond à l’état souhaité. Dans ce cas, il s’agit de l’installation de SQL Server. Le résultat de Test-DscConfiguration doit être True :

PS C:\> Test-DscConfiguration
True

Prestations

La liste des services retourne désormais les services SQL Server :

PS C:\> Get-Service -Name *SQL*
Status  Name           DisplayName
------  ----           -----------
Running MSSQLSERVER    SQL Server (MSSQLSERVER)
Stopped SQLBrowser     SQL Server Browser
Running SQLSERVERAGENT SQL Server Agent (MSSQLSERVER)
Running SQLTELEMETRY   SQL Server CEIP service (MSSQLSERVER)
Running SQLWriter      SQL Server VSS Writer

Serveur SQL

PS C:\> & sqlcmd -S $env:COMPUTERNAME
1> SELECT @@SERVERNAME
2> GO
1> quit