J'ai perdu le mot de passe sa sur une machine et lorsque je me connecte directement à la machine à l'aide d'un compte dans le groupe d'administration, SQL Server Management Studio ne me permet pas de me connecter à l'aide de l'authentification Windows.
Mon plan était de simplement me connecter au serveur, de se connecter via l'authentification Windows et de réinitialiser sa pour utiliser un nouveau mot de passe. Puisque je ne peux pas me connecter via l'authentification Windows, cela ne fonctionnera pas.
Sinon, comment réinitialiser le mot de passe sa?
security
sql-server-2000
Daniel Williams
la source
la source
Réponses:
Vous pouvez suivre les étapes mentionnées dans le lien ci-dessous pour réinitialiser le mot de passe SA:
Étapes résumées ci-dessous:
Ressources supplémentaires:
En fin de compte, vous pouvez toujours copier les fichiers de base de données vers une autre instance, ou même réinstaller SQL Server (en ajoutant un compte local en tant que sysadmin pendant ce processus).
la source
Ce que vous ferez dépendra de votre version de SQL Server, ainsi que si vous pouvez vous permettre de supprimer le service SQL Server afin d'établir de nouvelles informations d'identification. Les deux premières méthodes ici ne nécessitent pas de redémarrer l'instance:
Pour les instances SQL Server 2005, 2008 et 2008 R2
Vous pouvez vous connecter en utilisant le
NT AUTHORITY\SYSTEM
compte (ou d'autres méthodes de porte dérobée). Il y a quelques détails dans certaines des réponses ici:J'ai également une astuce sur MSSQLTips.com qui résout ce problème:
Essentiellement, vous téléchargez PSExec de Microsoft, puis l'utilisez pour lancer Management Studio une fois qu'il est installé:
Cela se connectera
NT AUTHORITY\SYSTEM
et vous permettra de faire des choses dans l'Explorateur d'objets, comme:Changez l'instance en SQL Server et en mode d'authentification Windows - cliquez avec le bouton droit sur le nom du serveur, cliquez sur Propriétés et modifiez le bouton radio s'il est actuellement défini sur Windows uniquement:
Définissez le mot de passe pour le
sa
compte - développez Sécurité, développez Connexions, cliquezsa
avec le bouton droit et cliquez sur Propriétés, et dans la boîte de dialogue résultante, il y aura deux champs de saisie de mot de passe:Ajoutez votre propre connexion en tant que
sysadmin
- cliquez avec le bouton droit sur Connexions, Nouvelle connexion ... entrez votre nom de connexion (dans le formulaireDOMAIN\username
), puis accédez à l'onglet Rôles du serveur et cochez lasysadmin
case et cliquez sur OK:(ou, si votre connexion est déjà répertoriée, cliquez avec le bouton droit sur Propriétés et assurez-vous que la
sysadmin
case est cochée sous Rôles du serveur)Pour SQL Server 2012 et les instances plus récentes
À partir de SQL Server 2012, les
NT Authority\SYSTEM
droits sur SQL Server n'étaient plus accordés par défaut. Donc, une autre façon de le faire dans ces nouvelles versions a été détaillée par Argenis Fernandez :Ouvrez
regedit.exe
et modifiez la valeur deHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\SQLWriter\ImagePath
pointer versSQLCMD.exe
, qui va être dansC:\Program Files (x86)\Microsoft SQL Server\Client SDK\ODBC\**<...110|120|130|140...>**\Tools\Binn
. Après la modification, la valeur de registre devrait ressembler à ceci (désolé pour le défilement):Essayez de redémarrer le service SQL VSS Writer (vous obtiendrez une erreur; c'est correct).
Vous devriez maintenant pouvoir vous connecter en
sysadmin
utilisantYourDomain\YourUserName
. Arrêtez donc le service SQL VSS Writer, corrigez le registre et redémarrez le service (si vous en avez besoin ou s'il s'exécutait avant de commencer).J'ai parcouru cela beaucoup plus en détail dans un deuxième conseil:
Bien que lorsque j'ai écrit cette astuce, j'ai utilisé une approche plus lourde pour faire une copie
SQLCMD.exe
et remplacersqlwriter.exe
- beaucoup plus facile de pointerSQLCMD.exe
directement le service .Si vous pouvez vous permettre de supprimer le service SQL Server
Il existe un chemin officiellement pris en charge par Microsoft qui nécessite de redémarrer l'instance en mode mono-utilisateur:
Il existe également une fonction dans dbatools.io , une solution Powershell pour la gestion de SQL Server, appelée
Reset-DbaAdmin
:La sécurité n'est pas le principal problème ici
Je vois beaucoup de gens appeler Microsoft à «corriger» ces soi-disant «vulnérabilités». Ce sont des approches valides pour récupérer l'accès à une instance de SQL Server que vous possédez à juste titre. Ils nécessitent tous des privilèges élevés sur l'hôte physique où réside SQL Server; comme je l'ai dit à plusieurs personnes, si vous ne voulez pas que les développeurs jouent avec les installations de SQL Server, n'en faites pas des administrateurs.
la source