Il existe quelques situations cocasses dans la vie d’un DBA ou d’un développeur SQL. Parmi celles-ci l’oubli du mot de passe du compte SA et aucun compte de connexion de type Windows existant sur le serveur SQL en tant que sysadmin … autant dire que l’on se retrouve coincé ! Que faire lorsque cela arrive ? Visiblement la solution n’est pas si évidente car je vois beaucoup de demande sur le forum developpez.com ou plus récemment un de mes collègues qui se reconnaitra si celui-ci lit ce billet.
Pour illustrer notre problème je prendrais pour exemple un de mes environnements. L’utilisateur LANGROUP\dbn ne peut pas se connecter à l’instance par défaut sur mon serveur mais fait parti du groupe administrateur local de ce dernier. Pour rappel avec SQL Server 2008 ou 2008 R2 le groupe administrateur local n’est plus administrateur du serveur SQL par défaut.
La première chose à faire est d’arrêter proprement le service SQL Server de l’instance concernée.
Une fois le service SQL Server arrêté il faut redémarré SQL Server via l’exécutable sqlservr.exe en mode mono-utilisateur avec l’option -m. Cette option permet à un membre du groupe administrateur local de se connecter avec les privilèges sysadmin à l’instance SQL Server concernée (cf BOL)
J’ai ici utilisé l’option -m en spécifiant à SQL Server que seuls les connexions initiées depuis l’utilitaire en ligne de commande sqlcmd doivent être acceptées par l’instance par défaut. Cela peut permettre dans certains cas les connexions intempestives depuis des certaines applications ou services d’applications qui pourraient nous gêner à nous connecter. Pour rappel, en mode mono utilisateur seule une connexion est autorisée .
Une fois l’instance démarrée en mode mono utilisateur les membres du groupe Windows administrateur local peut s’y connecter sans problème avec les droits sysadmin. Une fois connectée c’est à vous de jouer : réinitialisation du mot de passe SA ou GRANT des privilèges du compte de connexion désiré
…
La connexion se fait correctement.
CQFD !!
David BARBARIN (Mikedavem)
MVP SQL Server