Connexion à SQL Server 2008 R2 sans authentification !

A l’occasion de la rétrogradation d’un contrôleur de domaine en serveur autonome, j’ai perdu la possibilité de me connecter en administrateur local de mon serveur SQL Server 2008 R2. Normal ! Comme j’avais par ailleurs oublié le mot de passe de mon compte sa (authentification mixte), je n’avais donc plus aucune possibilité d’administrer l’instance SQL Server. Je tiens à préciser qu’il s’agissait là de ma machine de formation.

Pas de panique. Pour les étourneaux de mon espèce, il existe une solution ! Arrêtez votre instance SQL Server et redémarrez-la à partir de la ligne de commande du serveur :

"C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Binn\sqlservr.exe" -m
ou
"C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Binn\sqlservr.exe" -m

Pour préciser l’instance, vous pouvez ajouter -sMSSQLSERVER.

Ensuite, connectez-vous à SQL Server avec sqlcmd.exe :

"C:\Program Files\Microsoft SQL Server\110\Tools\Binn\sqlcmd.exe" -E

En mode mixte, vous pouvez changer le mot de passe du compte sa.

USE [master]
GO
ALTER LOGIN [sa] WITH PASSWORD='sa'
GO

En mode intégré, le mieux est de recréer le compte administrateur local :

USE [master]
GO
DROP LOGIN [ACERARIEN\Administrateur]
GO
CREATE LOGIN [ACERARIEN\Administrateur] FROM WINDOWS WITH DEFAULT_DATABASE=[master]
GO
sp_addsrvrolemember 'ACERARIEN\Administrateur','sysadmin'
GO

Vous pouvez aussi ajouter le groupe des administrateurs locaux :

CREATE LOGIN [BUILTIN\Administrateurs] FROM WINDOWS WITH DEFAULT_DATABASE=[master]
GO
sp_addsrvrolemember 'BUILTIN\Administrateurs','sysadmin'
GO

Dans l’exemple ci-dessus, ACERARIEN désigne le nom de la machine sur laquelle est installée SQL Server 2008 R2.

Ce hack marche aussi pour SQL Server 2012 !

Base de données  / Formateur SQL Server SQL Server SQL Server 2008 R2 SQL Server 2012 

Commentaires

Pas encore de commentaire.

Laisser un commentaire

(requis)

(requis)