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).
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.
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.
- 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
- Ouvrez l’éditeur de registre (
regedit.exe
) et accédez à la clé de registre du service SQL : HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\MSSQLSERVER; - 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
- Démarrez SQL Server:
net start MSSQLSERVER
- 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 ;
- 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 ;
- Accédez à Sécurité – > Connexions et recherchez l’utilisateur sa. L’utilisateur sa est désactivé par défaut;
- 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é);
- 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)
- 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
- 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
); - Démarrez le service SQL Server normalement;
- 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.
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:
- Démarrez SQL Server en mode utilisateur unique comme décrit ci-dessus ;
- Ouvrez l’invite de commande et connectez-vous à votre instance SQL Server:
sqlcmd –S localhost
- 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 - 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.