Was Sie tun, hängt von Ihrer SQL Server-Version ab sowie davon, ob Sie es sich leisten können, den SQL Server-Dienst herunterzufahren, um neue Anmeldeinformationen einzurichten. Die ersten beiden Methoden erfordern keinen Neustart der Instanz:
Für SQL Server 2005-, 2008- und 2008 R2-Instanzen
Sie können über das NT AUTHORITY\SYSTEM
Konto (oder andere Backdoor-Methoden) eine Verbindung herstellen. Einige Antworten enthalten einige Details:
Ich habe auch einen Tipp auf MSSQLTips.com , der dieses Problem behebt :
Im Wesentlichen laden Sie PSExec von Microsoft herunter und starten dann Management Studio, sobald Sie es installiert haben:
PsExec -s -i "C:\...\Ssms.exe"
Dadurch wird die Verbindung hergestellt, NT AUTHORITY\SYSTEM
und Sie können folgende Aufgaben im Objekt-Explorer ausführen:
Ä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 derzeit nur Windows ausgewählt ist:
Legen Sie das Kennwort für das sa
Konto fest - erweitern Sie Sicherheit, erweitern Sie Anmeldungen, klicken Sie mit der rechten Maustaste sa
und klicken Sie auf Eigenschaften. Im daraufhin angezeigten Dialogfeld werden zwei Kennworteingabefelder angezeigt:
Fügen Sie Ihr eigenes Login hinzu alssysadmin
- Klicken Sie mit der rechten Maustaste auf Logins, New Login ... Geben Sie Ihren Login-Namen (im Formular DOMAIN\username
) ein, wechseln Sie zur Registerkarte Server Roles und aktivieren Sie das Kontrollkästchen sysadmin
und klicken Sie auf OK:
(Wenn Ihr Login bereits aufgeführt ist, klicken Sie mit der rechten Maustaste auf Eigenschaften und vergewissern Sie sysadmin
sich, dass unter Serverrollen das Kontrollkästchen aktiviert ist.)
Für SQL Server 2012 und neuere Instanzen
Ab SQL Server 2012 wurden NT Authority\SYSTEM
standardmäßig keine Rechte mehr an SQL Server vergeben. Eine weitere Möglichkeit, dies in diesen neueren Versionen zu tun, wurde von Argenis Fernandez beschrieben :
- Wenn der SQL VSS Writer-Dienst ausgeführt wird, beenden Sie ihn und setzen Sie alle Wartungspläne oder Sicherungssoftware von Drittanbietern aus, die möglicherweise darauf angewiesen sind.
Öffnen Sie regedit.exe
und ändern Sie den Wert von HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\SQLWriter\ImagePath
, um auf zu zeigen SQLCMD.exe
, was in sein wird C:\Program Files (x86)\Microsoft SQL Server\Client SDK\ODBC\**<...110|120|130|140...>**\Tools\Binn
. Nach der Bearbeitung sollte der Registrierungswert wie folgt 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, den SQL VSS Writer-Dienst erneut zu starten (es wird eine Fehlermeldung angezeigt; das ist in Ordnung).
Sie sollten nun in der Lage sein, eine Verbindung mit sysadmin
herzustellen YourDomain\YourUserName
. Beenden Sie daher den SQL VSS Writer-Dienst, korrigieren Sie die Registrierung und starten Sie den Dienst neu (wenn er ausgeführt werden muss oder wenn er ausgeführt wurde, bevor Sie ihn gestartet haben).
Ich habe dies in einem zweiten Tipp ausführlicher erläutert:
Obwohl , wenn ich diesen Tipp habe ich verwendet , um einen umständlichen Ansatz zur Herstellung einer Kopie SQLCMD.exe
und ersetzen sqlwriter.exe
- viel einfacher, nur den Dienst verweist auf SQLCMD.exe
direkt.
Wenn Sie es sich leisten können, den SQL Server-Dienst herunterzufahren
Es gibt einen offiziell unterstützten Pfad von Microsoft, für den ein Neustart der Instanz im Einzelbenutzermodus erforderlich ist:
In dbatools.io , einer Powershell-Lösung zum Verwalten von SQL Server, gibt es auch eine Funktion mit dem Namen Reset-DbaAdmin
:
Sicherheit ist hier nicht das Hauptproblem
Ich sehe viele Leute, die Microsoft auffordern, diese sogenannten "Schwachstellen" zu "beheben". Dies sind gültige Methoden zum Wiederherstellen des Zugriffs auf eine Instanz von SQL Server, deren Eigentümer Sie zu Recht sind. 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 in Konflikt geraten, sollten Sie sie nicht zu Administratoren machen.