février 2, 2022

Comment réinitialiser le mot de passe SA sur Microsoft SQL Server?

Dans cet article, nous allons voir comment réinitialiser le mot de passe SA (administrateur système) dans Microsoft SQL Server 2019/2017/2014/2012. Ce guide vous aidera à restaurer l’accès à la base de données MSSQL si vous ne pouvez pas vous authentifier en utilisant le compte sa (le mot de passe sa a été oublié / perdu / le compte a été désactivé) ou en tant qu’utilisateur Windows (s’il n’y a pas d’utilisateurs avec les autorisations d’administrateur système MS SQL).

La sa locale est un compte administratif bien connu dans SQL Server. Dans la plupart des cas, il est désactivé, mais vous pouvez l’activer, définir / réinitialiser son mot de passe et restaurer l’accès à votre serveur SQL.

Pour restaurer l’accès à la base de données sans réinstaller complètement l’instance MS SQL (et avec la perte de la base de données principale), vous devez démarrer SQL Server en mode mono-utilisateur. Dans ce mode, vous pouvez vous connecter à SQL Server sous n’importe quel compte avec des autorisations d’administrateur local sur l’ordinateur sur lequel MS SQL Server est installé. Vous pouvez ensuite réinitialiser le mot de passe du compte sa et / ou accorder des autorisations administratives à des comptes Windows spécifiques.

Astuce. À partir de SQL Server 2008, le rôle d’administrateur système sur un serveur SQL n’est pas attribué par défaut au groupe d’administrateurs Windows locaux.

Afin d’exécuter MS SQL Server en mode mono-utilisateur, connectez-vous à l’hôte MSSQL sous n’importe quel compte avec l’autorisation d’administrateur local dans Windows.

  1. Arrêtez l’instance SQL Server (dans notre exemple, le nom de l’instance MSSQL est MSSQLSERVER) à partir de l’invite de commande net stop MSSQLSERVER ou en utilisant PowerShell: Get-Service MSSQLSERVER| Stop-Service  arrêtez le MSSQLSERVER via cli
  2. Ouvrez l’éditeur de registre (regedit.exe) et accédez à la clé de registre du service SQL : HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\MSSQLSERVER;
  3. Modifiez la valeur du paramètre ImagePath en ajoutant l’option -m comme argument à sqlservr.EXE. Par exemple, définissez la chaîne de démarrage suivante : "C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\Binn\sqlservr.exe" -sMSSQLSERVER -m  sql server s'exécute en mode utilisateur unique via le registre
  4. Démarrez SQL Server: net start MSSQLSERVER
  5. Votre serveur SQL s’exécute maintenant en mode mono-utilisateur et permet à tout membre du groupe Administrateurs locaux (ou à l’administrateur Windows intégré) de se connecter à l’instance SQL Server avec les privilèges sysadmin ;
  6. Ouvrez SQL Server Management Studio (SSMS) et connectez-vous au moteur de base de données SQL Server à l’aide d’un compte membre du groupe Administrateurs locaux ;  connectez-vous à SQL serve en mode mono-utilisateur via SQL Server Management Studio
  7. Accédez à Sécurité – > Connexions et recherchez l’utilisateur sa. L’utilisateur sa est désactivé par défaut;  L'utilisateur sa est désactivé dans MS SQL Server par défaut
  8. Ouvrez ses propriétés, accédez à l’onglet Général et définissez un nouveau mot de passe SA. Activez ensuite ce compte dans l’onglet État (Login – > Activé);  SQL Server: Réinitialiser le mot de passe SA
  9. Afin de permettre la connexion à MSSQL sous des comptes SQL locaux (y compris sa), vous devez activer le mode d’authentification SQL Server et Windows dans les propriétés du serveur de l’onglet Sécurité. Sinon, lors de la connexion sous le compte sa local, une erreur apparaîtra:
    Login failed for user 'sa'. (Microsoft SQL Server, Error: 18456)

     activer l'authentification en mode Serveur et Windows sur MSSQL

  10. Toujours dans la section Connexions, vous pouvez ajouter les utilisateurs Windows requis (local ou domaine) et lui attribuer un administrateur système (dans l’onglet Rôles de serveur). Ou, vous pouvez ajouter un rôle à l’utilisateur à partir de l’interface de ligne de commande sqlcmd:
    EXEC sp_addsrvrolemember 'DOMAIN\Username', 'sysadmin';)
    GO

     attribuez le rôle d'administrateur système sql server à l'utilisateur Windows
  11. Il reste à arrêter à nouveau le service MSSQL, renvoyez la valeur initiale du paramètre de registre ImagePart en supprimant le commutateur « -m » (C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\Binn\sqlservr.exe" -sMSSQLSERVER);
  12. Démarrez le service SQL Server normalement;
  13. Vous pouvez maintenant vous connecter au serveur SQL sous le compte sa en mode d’authentification SQL Server ou sous le compte d’utilisateur Windows auquel vous avez accordé des privilèges d’administrateur système dans SQL Server.
Astuce. Vous pouvez démarrer SQL Server en mode mono-utilisateur à l’aide du gestionnaire de configuration SQL Server. Pour ce faire, accédez à l’onglet Paramètres de démarrage dans les propriétés de l’instance SQL requise et ajoutez l’option de démarrage –m.

 configuration sql server ajouter des paramètres stratup

Vous pouvez également utiliser l’outil de ligne de commande sqlcmd pour réinitialiser le mot de passe SA et accorder l’accès à SQL Server:

  1. Démarrez SQL Server en mode utilisateur unique comme décrit ci-dessus ;
  2. Ouvrez l’invite de commande et connectez-vous à votre instance SQL Server: sqlcmd –S localhost
  3. Pour modifier le mot de passe de l’utilisateur SA et l’activer, exécutez les commandes T-SQL suivantes:
    ALTER LOGIN sa enable
    GO
    ALTER LOGIN sa WITH PASSWORD = 'new_sa_pass331'
    GO
  4. Pour accorder des autorisations d’administrateur système dans MSSQL pour un compte Windows (utilisateur local dans cet exemple), utilisez les commandes:
    CREATE LOGIN FROM WINDOWS
    GO
    ALTER SERVER ROLE sysadmin ADD MEMBER
    GO

Dans cet article, nous avons montré comment restaurer l’accès à SQL Server en mode mono-utilisateur. Dans ce mode, vous pouvez réinitialiser le mot de passe sa (et d’autres utilisateurs SQL) ou accorder des autorisations d’administrateur SQL aux comptes d’utilisateurs Windows. Le mode mono-utilisateur peut également être utilisé pour restaurer la base de données temdb dans le serveur MSSQL.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.