Herstellen einer Verbindung mit SQL Server, wenn Systemadministratoren den Zugriff verloren haben

Gilt für:yes SQL Server (alle unterstützten Versionen)

In diesem Artikel wird beschrieben, wie Sie den Zugriff auf die SQL Server Datenbank-Engine systemadministrator wiedererlangen können, wenn Sie gesperrt wurden. Ein Systemadministrator kann den Zugriff auf eine Instanz von SQL Server aus einem der folgenden Gründe verlieren:

  • Alle Anmeldedaten, die Mitglieder der festen Serverrolle sysadmin sind, wurden versehentlich entfernt.

  • Alle Windows-Gruppen, die Mitglieder der festen Serverrolle sysadmin sind, wurden versehentlich entfernt.

  • Die Anmeldedaten, die Mitglieder der festen Serverrolle sysadmin sind, gehören zu Mitarbeitern, die das Unternehmen verlassen haben oder nicht verfügbar sind.

  • Das sa-Konto wurde deaktiviert, oder das Kennwort ist unbekannt.

Lösung

Um Ihr Zugriffsproblem zu beheben, wird empfohlen, die Instanz von SQL Server im Einzelbenutzermodus zu starten. Dieser Modus verhindert, dass andere Verbindungen hergestellt werden, während Sie versuchen, den Zugriff zurückzugewinnen. Anschließend können Sie eine Verbindung zu Ihrer SQL Server-Instanz herstellen und Ihre Anmeldung zur Serverrolle sysadmin hinzufügen. Eine ausführliche Anleitung für diese Lösung finden Sie im Abschnitt Schrittweise Anleitung.

Sie können eine Instanz von SQL Server im Einzelbenutzermodus starten -m-f, entweder mit der -Option oder der -Option über die Befehlszeile. Jedes Mitglied der lokalen Administratorgruppe des Computers kann dann eine Verbindung mit der Instanz von SQL Server als Mitglied der festen Serverrolle sysadmin herstellen.

Wenn Sie die Instanz im Einzelbenutzermodus starten, beenden Sie zuerst den SQL Server-Agent-Dienst. Andernfalls SQL Server-Agent zuerst eine Verbindung herstellen, indem die einzige verfügbare Verbindung mit dem Server verwendet wird und Sie an der Anmeldung blockiert werden.

Die einzige verfügbare Verbindung kann auch von einer unbekannten Clientanwendung besetzt werden, bevor Sie sich anmelden können. Damit dies nicht geschieht, können Sie die -m-Option gefolgt von einem Anwendungsnamen verwenden, um die Verbindungen der angegebenen Anwendung auf eine einzelne Verbindung zu beschränken. Wenn Sie beispielsweise SQL Server mit beginnen-mSQLCMD, werden Verbindungen auf eine einzelne Verbindung beschränkt, die sich selbst als -mSQLCMD identifiziert. Verwenden Sie , um über Abfrage-Editor in Management Studio Verbindung herzustellen-m"Microsoft SQL Server Management Studio - Query".

Wichtig

Verwenden Sie -m unter keinen Umständen als Sicherheitsfeature mit einem Anwendungsnamen. Clientanwendungen geben den Anwendungsnamen über die Einstellungen der Verbindungszeichenfolgen an, sodass er problemlos mit einem falschen Namen gespooft werden kann.

In der folgenden Tabelle werden die verschiedenen Methoden zusammengefasst, mit denen die Instanz über die Befehlszeile im Einzelbenutzermodus gestartet werden kann.

Option BESCHREIBUNG Verwendung
-m Beschränkt die Verbindungen auf eine einzelne Verbindung Wenn keine anderen Benutzer versuchen, eine Verbindung mit der Instanz herzustellen, oder Sie den Namen der Anwendung nicht kennen, mit der die Verbindung zur Instanz hergestellt wird
-mSQLCMD Beschränkt die Verbindungen auf eine einzelne Verbindung, die sich als sqlcmd-Clientprogramm identifizieren muss Wenn Sie mit sqlcmd eine Verbindung zur Instanz herstellen und verhindern möchten, dass andere Anwendungen die einzige verfügbare Verbindung belegen
-m"Microsoft SQL Server Management Studio - Query" Beschränkt die Verbindungen auf eine einzelne Verbindung, die sich selbst als die Anwendung Microsoft SQL Server Management Studio - Query identifizieren muss. Wenn Sie planen, eine Verbindung mit der Instanz über die Abfrage-Editor in Management Studio und sie verhindern möchten, dass andere Anwendungen die einzige verfügbare Verbindung verwenden.
-f Beschränkt die Verbindungen auf eine einzelne Verbindung und startet die Instanz mit einer minimalen Konfiguration Wenn eine andere Konfiguration den Start verhindert
     

Schrittweise Anweisungen

Eine Schritt-für-Schritt-Anleitung zum Starten SQL Server im Einzelbenutzermodus finden Sie unter Starten SQL Server im Single-User Modus.

PowerShell

Option 1: Ausführen der Schritte direkt in einem ausführbaren Notebook über Azure Data Studio

Hinweis

Bevor Sie versuchen, dieses Notebook zu öffnen, stellen Sie sicher, dass Azure Data Studio auf Ihrem lokalen Computer installiert ist. Informationen zur Installation finden Sie unter Installieren von Azure Data Studio.

Option 2: Manuelles Ausführen des Schritts

  1. Öffnen Sie einen Windows PowerShell-Befehl, und führen Sie ihn als Administrator aus.

  2. Richten Sie einen Dienstnamen und eine SQL Server-Instanz sowie Windows-Anmeldevariablen ein. Ersetzen Sie diese durch Werte, die Ihrer Umgebung entsprechen.

    $service_name = "MSSQL`$instancename"  # for a default instace use: "MSSQLSERVER"
    $sql_server_instance = "machine_name\instance"
    $login_to_be_granted_access = "[CONTOSO\PatK]"
    
  3. Beenden Sie den SQL Server-Dienst, damit er mithilfe des folgenden Befehls im Einzelbenutzermodus neu gestartet werden kann:

    net stop $service_name
    
  4. Starten Sie nun Ihre SQL Server-Instanz im Einzelbenutzermodus, und gestatten Sie nur SQLCMD.exe das Herstellen einer Verbindung (/mSQLCMD).

    Hinweis

    Achten Sie darauf, für SQLCMD Großbuchstaben zu verwenden.

    net start $service_name /mSQLCMD
    
  5. Führen Sie mithilfe von SQLCMD den Befehl CREATE LOGIN gefolgt vom Befehl ALTER SERVER ROLE aus. Bei diesem Schritt wird davon ausgegangen, dass Sie sich mit einem Konto, das Mitglied der Gruppe „Lokale Administratoren“ ist, bei Windows angemeldet haben. Dies setzt voraus, dass Sie die Domänen- und Anmeldenamen durch die Anmeldeinformationen ersetzt haben, denen Sie die sysadmin-Mitgliedschaft erteilen möchten.

    sqlcmd.exe -E -S $sql_server_instance -Q "CREATE LOGIN $login_to_be_granted_access FROM WINDOWS;  ALTER SERVER ROLE sysadmin ADD MEMBER $login_to_be_granted_access; "
    

    Hinweis

    Wenn Sie den folgenden Fehler erhalten, müssen Sie sicherstellen, dass keine andere SQLCMD-Instanz mit dem SQL Server:
    Sqlcmd: Error: Microsoft ODBC Driver X for SQL Server : Login failed for user 'CONTOSO\BobD'. Reason: Server is in single user mode. Only one administrator can connect at this time..

  6. Gemischter Modus (optional): Wenn Ihre SQL Server-Instanz im gemischten Authentifizierungsmodus ausgeführt wird, haben Sie die folgenden Möglichkeiten:

    1. Gewähren Sie einer SQL-Anmeldung die Mitgliedschaftsrechte der sysadmin-Rolle. Führen Sie Code wie den folgenden aus, um eine neue SQL Server-Authentifizierungsanmeldung zu erstellen, die Mitglied der festen Serverrolle „sysadmin“ ist. Ersetzen Sie "?j8:z$G=JE9" durch ein sicheres Kennwort Ihrer Wahl.

      $strong_password = "j8:zG=J?E9"
      sqlcmd.exe -E -S $sql_server_instance -Q "CREATE LOGIN TempLogin WITH PASSWORD = '$strong_password'; ALTER SERVER ROLE sysadmin ADD MEMBER TempLogin; "
      
    2. Dies gilt auch, wenn Ihre SQL Server-Instanz im gemischten Authentifizierungsmodus ausgeführt wird und Sie das Kennwort eines aktivierten sa-Kontos zurücksetzen möchten. Ändern Sie das Kennwort des sa-Kontos mit folgender Syntax. Stellen Sie sicher, "j8:zG=J?E9" durch ein sicheres Kennwort Ihrer Wahl zu ersetzen:

      $strong_password = "j8:zG=J?E9"
      sqlcmd.exe -E -S $sql_server_instance -Q "ALTER LOGIN sa WITH PASSWORD = $strong_password; "
      
  7. Beenden Sie Ihre SQL Server-Instanz im Mehrbenutzermodus, und starten Sie sie neu.

    net stop $service_name
    net start $service_name
    

Verwenden des SQL Server-Konfigurations-Managers und von Management Studio (SSMS)

In dieser Anleitung wird Folgendes vorausgesetzt:

  • SQL Server, die auf einem Windows 8 oder höher ausgeführt werden. Auf geringfügige Abweichungen bei früheren Versionen von SQL Server oder Windows wird ggf. hingewiesen.

  • SQL Server Management Studio ist auf dem Computer installiert.

Führen Sie diese Schritte aus, während Sie in Windows als Mitglied der lokalen Administratorgruppe angemeldet sind.

  1. Klicken Sie im Windows Startmenü mit der rechten Maustaste auf das Symbol für SQL Server-Konfigurations-Manager und wählen Sie Als Administrator ausführen aus, um Ihre Administratoranmeldeinformationen an Konfigurations-Manager.

  2. Wählen SQL Server-Konfigurations-Manager im linken Bereich die Option Dienste SQL Server aus. Suchen Sie im rechten Bereich nach Ihrer Instanz SQL Server. (Die Standardinstanz von SQL Server enthält (MSSQLSERVER) nach dem Computernamen. Benannte Instanzen werden in Großbuchstaben mit demselben Namen wie unter Registrierte Server angezeigt.) Klicken Sie mit der rechten Maustaste auf die Instanz SQL Server, und klicken Sie dann auf Eigenschaften.

  3. Geben Sie auf der Registerkarte Startparameter im Feld Startparameter angeben den Namen ein, und klicken Sie dann auf Hinzufügen. (Der Parameter entspricht einem Bindestrich und dem Kleinbuchstaben m.)

    Hinweis

    Für einige frühere Versionen von SQL Server es keine Registerkarte Startparameter. Doppelklicken Sie in diesem Fall auf der Registerkarte Erweitert auf Startparameter. Die Parameter werden in einem sehr kleinen Fenster geöffnet. Achten Sie darauf, die vorhandenen Parameter nicht zu ändern. Fügen Sie ganz am Ende einen neuen Parameter hinzu ;-m , und klicken Sie dann auf ;-m. (Der Parameter entspricht einem Semikolon, einem Bindestrich und dem Kleinbuchstaben m.)

  4. Klicken Sie auf OK, klicken Sie nach Ausgabe der Neustartmeldung mit der rechten Maustaste auf den Servernamen, und klicken Sie dann auf Neu starten.

  5. Nachdem SQL Server neu gestartet wurde, befindet sich Ihr Server im Einzelbenutzermodus. Stellen Sie sicher, SQL Server Agent nicht ausgeführt wird. da er andernfalls Ihre einzige Verbindung belegt.

  6. Klicken Sie im Windows Startmenü mit der rechten Maustaste auf das Symbol für Management Studio und wählen Sie Als Administrator ausführen aus. Dadurch werden Ihre Administratoranmeldeinformationen an SQL Server Management Studio übergeben.

    Hinweis

    In früheren Windows-Versionen wird die Option Als Administrator ausführen als Untermenü angezeigt.

    In einigen Konfigurationen versucht SSMS, mehrere Verbindungen herzustellen. Mehrere Verbindungen können nicht ausgeführt werden, SQL Server sich im Einzelbenutzermodus befindet. Führen Sie Ihrem Szenario entsprechend die passende Aktion aus:

    1. Stellen Sie mithilfe der Windows-Authentifizierung, die Ihre Administratoranmeldeinformationen enthält, eine Verbindung zum Objekt-Explorer her. Erweitern Sie Sicherheitsowie Anmeldungen, und doppelklicken Sie auf Ihre eigene Anmeldung. Wählen Sie auf der Seite Serverrollen die Option sysadminaus, und klicken Sie dann auf OK.

    2. Anstatt über den Objekt-Explorer stellen Sie in einem Abfragefenster unter Verwendung der Windows-Authentifizierung (die Ihre Administratoranmeldeinformationen enthält) eine Verbindung her. (Diese Art der Verbindung wird nur unterstützt, wenn sie nicht über den Objekt-Explorer hergestellt wurde.) Führen Sie Code (wie im folgenden Beispiel) aus, um eine neue Anmeldung mit Windows-Authentifizierung hinzuzufügen, die Mitglied der festen Serverrolle sysadmin ist. Im folgenden Beispiel wird ein Domänenbenutzer mit dem Namen CONTOSO\PatK hinzugefügt.

      CREATE LOGIN [CONTOSO\PatK] FROM WINDOWS;  
      ALTER SERVER ROLE sysadmin ADD MEMBER [CONTOSO\PatK];  
      
    3. Wenn Ihre SQL Server im gemischten Authentifizierungsmodus ausgeführt wird, stellen Sie mithilfe Windows-Authentifizierung (die Ihre Administratoranmeldeinformationen enthält) eine Verbindung mit einem Abfragefenster her. Führen Sie Code wie den folgenden aus, um eine neue SQL Server-Authentifizierungsanmeldung zu erstellen, die Mitglied der festen Serverrolle sysadmin ist.

      CREATE LOGIN TempLogin WITH PASSWORD = '************';  
      ALTER SERVER ROLE sysadmin ADD MEMBER TempLogin;  
      

      Warnung

      Ersetzen Sie ************ durch ein sicheres Kennwort.

    4. Wenn Ihr SQL Server im gemischten Authentifizierungsmodus ausgeführt wird und Sie das Kennwort des sa-Kontos zurücksetzen möchten, stellen Sie mithilfe der Windows-Authentifizierung (die Ihre Administratoranmeldeinformationen enthält) eine Verbindung mit einem Abfragefenster her. Ändern Sie das Kennwort des sa -Kontos mit folgender Syntax.

      ALTER LOGIN sa WITH PASSWORD = '************';  
      

      Warnung

      Ersetzen Sie ************ durch ein sicheres Kennwort.

  7. Schließen Sie Management Studio.

  8. In den folgenden Schritten wird SQL Server in den Mehrbenutzermodus zurückversetzt. Wählen Sie in SQL Server-Konfigurations-Manager im linken Bereich SQL Server Dienste aus.

  9. Klicken Sie im rechten Bereich mit der rechten Maustaste auf die Instanz von SQL Server, und klicken Sie dann auf Eigenschaften.

  10. Wählen Sie auf der Registerkarte Startparameter im Feld Vorhandene Parameter die Option aus , und klicken Sie dann auf Entfernen.

    Hinweis

    Für einige frühere Versionen von SQL Server gibt es keine Registerkarte Startparameter. Doppelklicken Sie in diesem Fall auf der Registerkarte Erweitert auf Startparameter. Die Parameter werden in einem sehr kleinen Fenster geöffnet. Entfernen Sie den , den ;-m Sie zuvor hinzugefügt haben, und klicken Sie dann auf ;-m.

  11. Klicken Sie mit der rechten Maustaste auf den Servernamen, und klicken Sie dann auf Neu starten. Starten Sie SQL Server-Agent erneut, wenn Sie ihn beendet haben, bevor Sie SQL Server im Einzelbenutzermodus starten.

Nun sollten Sie in der Lage sein, mit einem der Konten, das jetzt Mitglied der festen Serverrolle sysadmin ist, auf normale Weise eine Verbindung herzustellen.

Weitere Informationen