Ich habe das sa-Kennwort auf einem Computer verloren. Wenn ich mich direkt mit einem Konto in der Administratorgruppe am Computer anmelde, kann ich mich mit SQL Server Management Studio nicht mit der Windows-Authentifizierung anmelden.
Mein Plan war es, mich einfach beim Server anzumelden, eine Verbindung über die Windows-Authentifizierung herzustellen und sa zurückzusetzen, um ein neues Kennwort zu verwenden. Da ich keine Verbindung über die Windows-Authentifizierung herstellen kann, funktioniert dies nicht.
Wie kann ich das sa-Passwort sonst zurücksetzen?
Sie können die im folgenden Link genannten Schritte ausführen, um das Kennwort SA) zurückzusetzen:
Nachfolgend zusammengefasste Schritte:
- Öffnen Sie SQL Server Configuration Manager über Startmenü> Programme> Microsoft SQL Server 20xx> Konfigurationstools>, das für die neueste Version von SQL Server relevant ist, die Sie installiert haben (z. B. wenn Sie 2005 und 2012 installiert haben, verwenden Sie die Version 2012). Sie haben noch kein Startmenü? Geben Sie auf dem Startbildschirm von Windows 8 SQL Server Con ... ein, bis es angezeigt wird.
- Beenden Sie die SQL Server-Instanz, die Sie wiederherstellen müssen, indem Sie mit der rechten Maustaste auf die Instanz in SQL Server Services klicken und "Stop" auswählen.
- Klicken Sie mit der rechten Maustaste auf die Instanz, die Sie gerade gestoppt haben, klicken Sie auf Eigenschaften, und fügen Sie auf der Registerkarte "Erweitert" im Textfeld Eigenschaften am Ende der Liste in der Option "Startparameter" "; –m" hinzu (bei neueren Versionen auch Sie) Sie können direkt zur Registerkarte "Startparameter" wechseln, "-m" eingeben und auf "Hinzufügen" klicken, ohne sich um die Syntax, das Semikolon oder andere Elemente kümmern zu müssen.
- Klicken Sie auf die Schaltfläche "OK" und starten Sie die SQL Server-Instanz neu
- Nachdem die SQL Server-Instanz im Einzelbenutzermodus gestartet wurde, kann das Windows-Administratorkonto mithilfe des Dienstprogramms sqlcmd mithilfe der Windows-Authentifizierung eine Verbindung zu SQL Server herstellen. Sie können Transact-SQL-Befehle wie "sp_addsrvrolemember" verwenden, um der Sysadmin-Serverrolle eine vorhandene (oder eine neu erstellte) Anmeldung hinzuzufügen.
Im folgenden Beispiel wird der Sysadmin-Rolle das Konto "Buck" in der Domäne "CONTOSO" hinzugefügt:
EXEC sp_addsrvrolemember 'CONTOSO\Buck', 'sysadmin';
Nachdem der Systemadministratorzugriff wiederhergestellt wurde, entfernen Sie das "; -m" mithilfe des Konfigurationsmanagers aus den Startparametern und starten Sie die SQL Server-Instanz erneut.
HINWEIS: Stellen Sie sicher, dass zwischen ";" kein Leerzeichen steht. und "-m", der Registrierungsparameter-Parser reagiert empfindlich auf solche Tippfehler. In der SQL Server-Datei ERRORLOG sollte ein Eintrag angezeigt werden, der besagt, dass SQL Server im Einzelbenutzermodus gestartet wurde.
Zusätzliche Ressourcen:
Letztendlich können Sie die Datenbankdateien jederzeit auf eine andere Instanz kopieren oder sogar SQL Server neu installieren (während dieses Vorgangs ein lokales Konto als Systemadministrator hinzufügen).
Was Sie tun, hängt von Ihrer SQL Server-Version ab und davon, ob Sie es sich leisten können, den SQL Server-Dienst herunterzufahren, um neue Anmeldeinformationen einzurichten. Die ersten beiden Methoden erfordern hier keinen Neustart der Instanz:
Sie können eine Verbindung mit dem Konto NT AUTHORITY\SYSTEM
(Oder anderen Backdoor-Methoden) herstellen. In einigen Antworten finden Sie einige Details:
Ich habe auch einen Tipp zu MSSQLTips.com , der dieses Problem behebt:
Im Wesentlichen laden Sie PSExec von Microsoft herunter und starten damit Management Studio, sobald Sie es installiert haben:
PsExec -s -i "C:\...\Ssms.exe"
Dies wird als NT AUTHORITY\SYSTEM
Verbunden und ermöglicht es Ihnen, Dinge im Objekt-Explorer zu tun, wie:
Ändern Sie die Instanz in den SQL Server- und Windows-Authentifizierungsmodus - klicken Sie mit der rechten Maustaste auf den Servernamen, klicken Sie auf Eigenschaften und ändern Sie das Optionsfeld, wenn es derzeit auf Windows eingestellt ist nur:
Legen Sie das Passwort für das Konto sa
fest - erweitern Sie Sicherheit, erweitern Sie Anmeldungen, klicken Sie mit der rechten Maustaste auf sa
und klicken Sie auf Eigenschaften. Im daraufhin angezeigten Dialogfeld werden zwei Passworteingabefelder angezeigt:
Fügen Sie Ihr eigenes Login als sysadmin
hinzu - klicken Sie mit der rechten Maustaste auf Logins, New Login ... geben Sie Ihren Login-Namen ein (im Formular DOMAIN\username
) Wechseln Sie dann zur Registerkarte Serverrollen, aktivieren Sie das Kontrollkästchen sysadmin
und klicken Sie auf OK:
(Wenn Ihre Anmeldung bereits aufgeführt ist, klicken Sie mit der rechten Maustaste auf Eigenschaften, und stellen Sie sicher, dass sysadmin
unter Serverrollen aktiviert ist.)
Ab SQL Server 2012 wurden NT Authority\SYSTEM
Standardmäßig keine Rechte mehr für SQL Server erteilt. Ein anderer Weg, dies in diesen neueren Versionen zu tun, war detailliert von Argenis Fernandez :
Öffnen Sie regedit.exe
Und ändern Sie den Wert von HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\SQLWriter\ImagePath
In SQLCMD.exe
, Der sich in C:\Program Files (x86)\Microsoft SQL Server\Client SDK\ODBC\**<...110|120|130|140...>**\Tools\Binn
befindet. Nach dem Bearbeiten sollte der Registrierungswert ungefähr so aussehen (Entschuldigung für das Scrollen):
"C:Program Files (x86)\Microsoft SQL Server\Client SDK\ODBC\130\Tools\Binn\SQLCMD.exe" -S .\instancename -E -Q "ALTER ROLE sysadmin ADD MEMBER [YourDomain\YourUserName];"
Versuchen Sie erneut, den SQL VSS Writer-Dienst zu starten (es wird eine Fehlermeldung angezeigt; das ist in Ordnung).
Sie sollten jetzt in der Lage sein, mit YourDomain\YourUserName
Eine Verbindung als sysadmin
herzustellen. Beenden Sie also den SQL VSS Writer-Dienst, korrigieren Sie die Registrierung und starten Sie den Dienst neu (wenn Sie ihn ausführen müssen oder wenn er ausgeführt wurde, bevor Sie ihn gestartet haben).
Ich habe dies in einem zweiten Tipp ausführlicher behandelt:
Als ich diesen Tipp schrieb, benutzte ich einen umständlicheren Ansatz, eine Kopie von SQLCMD.exe
Zu erstellen und sqlwriter.exe
Zu ersetzen - viel einfacher, den Dienst direkt auf SQLCMD.exe
Zu richten.
Es gibt einen offiziell unterstützten Pfad von Microsoft, für den die Instanz im Einzelbenutzermodus neu gestartet werden muss:
Es gibt auch eine Funktion in dbatools.io , einer Powershell-Lösung zum Verwalten von SQL Server mit dem Namen Reset-DbaAdmin
:
Ich sehe viele Leute, die Microsoft auffordern, diese sogenannten "Schwachstellen" zu "beheben". Dies sind gültige Ansätze zum Wiederherstellen des Zugriffs auf eine Instanz von SQL Server, die Sie zu Recht besitzen. Sie alle erfordern erhöhte Berechtigungen auf dem physischen Host, auf dem sich SQL Server befindet. Wenn Sie nicht möchten, dass Entwickler mit SQL Server-Installationen herumspielen, machen Sie sie nicht zu Administratoren.