Delen via


Verbinding maken met SQL Server wanneer systeembeheerders zijn vergrendeld

van toepassing op:SQL Server-

In dit artikel wordt beschreven hoe u weer toegang kunt krijgen tot de SQL Server Database Engine als systeembeheerder als u bent vergrendeld. Een systeembeheerder heeft vanwege een van de volgende redenen geen toegang meer tot een exemplaar van SQL Server:

  • Alle aanmeldingen die lid zijn van de sysadmin vaste serverfunctie zijn per ongeluk verwijderd.

  • Alle Windows-groepen die lid zijn van de sysadmin vaste serverfunctie zijn per ongeluk verwijderd.

  • De logins die lid zijn van de sysadmin vast ingestelde serverrol zijn voor personen die het bedrijf hebben verlaten of niet beschikbaar zijn.

  • Het sa-account is uitgeschakeld of niemand weet het wachtwoord.

Resolutie

Om uw toegangsprobleem op te lossen, wordt u aangeraden het exemplaar van SQL Server te starten in de modus voor één gebruiker. Deze modus voorkomt dat er andere verbindingen optreden terwijl u opnieuw toegang probeert te krijgen. Vanaf hier kunt u verbinding maken met uw SQL Server-exemplaar en uw aanmelding toevoegen aan de sysadmin rol op de server. Gedetailleerde stappen voor deze oplossing vindt u in de sectie stapsgewijze instructies.

U kunt een exemplaar van SQL Server starten in de modus voor één gebruiker met de -m of -f opties vanaf de opdrachtregel. Elk lid van de lokale beheerdersgroep van de computer kan vervolgens verbinding maken met het exemplaar van SQL Server als lid van de sysadmin vaste serverfunctie.

Wanneer u het exemplaar start in de modus voor één gebruiker, stopt u de SQL Server Agent-service. Anders kan SQL Server Agent als eerste verbinding maken, waardoor de enige beschikbare verbinding met de server wordt gebruikt en u zich niet kunt aanmelden.

Het is ook mogelijk dat een onbekende clienttoepassing de enige beschikbare verbinding neemt voordat u zich kunt aanmelden. Als u wilt voorkomen dat dit gebeurt, kunt u de optie -m gebruiken, gevolgd door een toepassingsnaam om verbindingen met één verbinding vanuit de opgegeven toepassing te beperken. Het starten van SQL Server met -mSQLCMD beperkt bijvoorbeeld verbindingen met één verbinding die zichzelf identificeert als het sqlcmd-clientprogramma. Gebruik -m"Microsoft SQL Server Management Studio - Query"om verbinding te maken via de Query-editor in Management Studio.

Belangrijk

Gebruik geen -m met een toepassingsnaam als beveiligingsfunctie. Clienttoepassingen geven de naam van de toepassing op via de instellingen voor de verbindingsreeks, zodat deze eenvoudig kan worden vervalst met een valse naam.

De volgende tabel bevat een overzicht van de verschillende manieren om uw exemplaar te starten in de modus voor één gebruiker in de opdrachtregel.

Optie Beschrijving Wanneer gebruikt u
-m Beperkt verbindingen tot één verbinding Er zijn geen andere gebruikers die verbinding proberen te maken met het exemplaar of u weet niet zeker welke toepassingsnaam u gebruikt om verbinding te maken met het exemplaar.
-mSQLCMD Hiermee beperkt u verbindingen tot één verbinding die zichzelf moet identificeren als het sqlcmd-clientprogramma U wilt verbinding maken met het exemplaar met sqlcmden u wilt voorkomen dat andere toepassingen de enige beschikbare verbinding maken.
-m"Microsoft SQL Server Management Studio - Query" Hiermee worden verbindingen beperkt tot één verbinding die zichzelf moet identificeren als de Microsoft SQL Server Management Studio - Query applicatie. U wilt verbinding maken met het exemplaar via de Query-editor in Management Studio en u wilt voorkomen dat andere toepassingen de enige beschikbare verbinding maken.
-f Beperkt verbindingen met één verbinding en start het exemplaar in minimale configuratie Een andere configuratie voorkomt dat u begint.

Stapsgewijze instructies

Zie voor stapsgewijze instructies over het starten van SQL Server in de modus voor één gebruiker SQL Server starten in Single-User modus.

PowerShell gebruiken

Optie 1: Voer de stappen rechtstreeks uit in een uitvoerbaar notebook met behulp van Azure Data Studio

Notitie

Voordat u dit notebook probeert te openen, controleert u of Azure Data Studio is geïnstalleerd op uw lokale computer. Zie om te leren hoe u Azure Data Studio installeert.

Optie 2: Volg de stap handmatig

  1. Open een Windows PowerShell-opdrachtprompt met verhoogde bevoegdheid.

  2. Stel servicenaam en SQL Server-exemplaar en Windows-aanmeldingsvariabelen in. Vervang deze waarden door waarden die overeenkomen met uw omgeving.

    Als u een standaardexemplaar hebt, gebruik MSSQLSERVER zonder exemplaarnaam.

    $service_name = "MSSQL`$instancename"
    $sql_server_instance = "machine_name\instance"
    $login_to_be_granted_access = "[CONTOSO\PatK]"
    
  3. Stop de SQL Server-service zodat deze opnieuw kan worden opgestart met de modus voor één gebruiker, met behulp van de volgende opdracht:

    Als u een standaardexemplaar hebt, gebruik MSSQLSERVER zonder exemplaarnaam.

    net stop $service_name
    
  4. Start nu uw SQL Server-exemplaar in één gebruikersmodus en sta alleen toe dat SQLCMD.exe verbinding kan maken (/mSQLCMD):

    Notitie

    Zorg ervoor dat u hoofdletters gebruikt SQLCMD

    Als u een standaardexemplaar hebt, gebruik MSSQLSERVER zonder exemplaarnaam.

    net start $service_name /f /mSQLCMD
    
  5. Voer met sqlcmdeen CREATE LOGIN opdracht uit, gevolgd door ALTER SERVER ROLE opdracht. In deze stap wordt ervan uitgegaan dat u bent aangemeld bij Windows met een account dat lid is van de groep Lokale beheerders. In deze stap wordt ervan uitgegaan dat u de domeinnamen en aanmeldingsnamen hebt vervangen door de referenties die u sysadmin-lidmaatschap wilt geven.

    Als u een standaardinstantie hebt, gebruikt u de naam van de server.

    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; "
    

    Als u de volgende fout krijgt, moet u ervoor zorgen dat er geen andere sqlcmd- is verbonden met 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. gemengde modus (optioneel): Als uw SQL Server-exemplaar wordt uitgevoerd in de modus voor gemengde verificatie, kunt u ook het volgende doen:

    1. Ken de sysadmin rol lidmaatschap toe aan een SQL Server-login. Voer code uit, zoals de volgende om een nieuwe SQL Server-verificatieaanmelding te maken die lid is van de sysadmin vaste serverfunctie. Vervang <strong_password> door een sterk wachtwoord van uw keuze.

      Als u een standaardexemplaar hebt, gebruik de naam van de server.

      $strong_password = "<strong_password>"
      sqlcmd.exe -E -S $sql_server_instance -Q "CREATE LOGIN TempLogin WITH PASSWORD = '$strong_password'; ALTER SERVER ROLE sysadmin ADD MEMBER TempLogin; "
      
    2. Als uw SQL Server-exemplaar wordt uitgevoerd in de gemengde authenticatiemodus, en u het wachtwoord van een ingeschakeld sa-account opnieuw wilt instellen. Wijzig het wachtwoord van het sa-account met de volgende syntaxis. Zorg ervoor dat u <strong_password> vervangt door een sterk wachtwoord van uw keuze:

      Als u een standaardexemplaar hebt, gebruik de naam van de server.

      $strong_password = "<strong_password>"
      sqlcmd.exe -E -S $sql_server_instance -Q "ALTER LOGIN sa WITH PASSWORD = $strong_password; "
      
  7. Uw SQL Server-exemplaar stoppen en opnieuw starten in de modus voor meerdere gebruikers

    Als u een standaardexemplaar hebt, gebruikt u MSSQLSERVER zonder exemplaarnaam.

    net stop $service_name
    net start $service_name
    

SQL Server Configuration Manager en Management Studio (SSMS) gebruiken

In deze instructies wordt ervan uitgegaan dat:

  • SQL Server wordt uitgevoerd in Windows 8 of hoger. Kleine aanpassingen voor eerdere versies van SQL Server of Windows worden indien van toepassing verstrekt.

  • SQL Server Management Studio is geïnstalleerd op de computer.

Voer deze instructies uit terwijl u bent aangemeld bij Windows als lid van de lokale beheerdersgroep.

  1. Klik in het menu Start van Windows met de rechtermuisknop op het pictogram voor SQL Server Configuration Manager en kies Als administrator uitvoeren om uw beheerdersreferenties door te geven aan Configuration Manager.

  2. Selecteer in SQL Server Configuration Manager in het linkerdeelvenster SQL Server Services. Zoek in het rechterdeelvenster uw exemplaar van SQL Server. (Het standaardexemplaar van SQL Server bevat (MSSQLSERVER) na de computernaam. Benoemde exemplaren worden in hoofdletters weergegeven met dezelfde naam die ze hebben in Registered Servers. Klik met de rechtermuisknop op het exemplaar van SQL Server en selecteer Eigenschappen.

  3. Op het tabblad Opstartparameters, in het vak Geef een opstartparameter op, typ -m en selecteer vervolgens Toevoegen. (Dat is een streepje en kleine letter m.)

    Voor sommige eerdere versies van SQL Server is er geen tabblad Opstartparameters. Dubbelklik in dat geval op het tabblad Geavanceerd op Opstartparameters. De parameters worden geopend in een klein venster. Pas op dat u geen van de bestaande parameters wijzigt. Voeg aan het einde een nieuwe parameter toe ;-m en selecteer OK-. (Dat is een puntkomma en vervolgens een streepje en kleine letter m.)

  4. Selecteer OK, en nadat het bericht om opnieuw op te starten verschijnt, klik met de rechtermuisknop op uw servernaam en selecteer vervolgens Opnieuw Opstarten.

  5. Nadat SQL Server opnieuw is opgestart, bevindt uw server zich in de modus voor één gebruiker. Zorg ervoor dat SQL Server Agent niet wordt uitgevoerd. Als het gestart wordt, neemt het uw enige verbinding in beslag.

  6. Klik in het menu Start van Windows met de rechtermuisknop op het pictogram voor Management Studio en selecteer Als administrator uitvoeren. Hiermee worden uw beheerdersreferenties doorgegeven aan SSMS.

    Voor eerdere versies van Windows wordt de optie Als administrator uitvoeren weergegeven als submenu.

    In sommige configuraties probeert SSMS verschillende verbindingen te maken. Meerdere verbindingen mislukken omdat SQL Server zich in de modus voor één gebruiker bevindt. Voer op basis van uw scenario een van de volgende acties uit.

    1. Maak verbinding met Objectverkenner met behulp van Windows-verificatie, waaronder uw beheerdersreferenties. Vouw Securityuit, vouw inloggegevensuit en dubbelklik op uw eigen inloggegevens. Selecteer op de pagina Serverfunctiessysadminen selecteer OK.

    2. In plaats van verbinding te maken met Objectverkenner, maakt u verbinding met een queryvenster met behulp van Windows-verificatie (inclusief uw beheerdersreferenties). (U kunt op deze manier alleen verbinding maken als u geen verbinding hebt gemaakt met Objectverkenner.) Voer code uit zoals het volgende om een nieuwe Windows-verificatieaanmelding toe te voegen die lid is van de sysadmin vaste serverfunctie. In het volgende voorbeeld wordt een domeingebruiker met de naam CONTOSO\PatKtoegevoegd.

      CREATE LOGIN [CONTOSO\PatK] FROM WINDOWS;
      ALTER SERVER ROLE sysadmin ADD MEMBER [CONTOSO\PatK];
      
    3. Als uw SQL Server wordt uitgevoerd in de modus voor gemengde verificatie, maakt u verbinding met een queryvenster met behulp van Windows-verificatie (inclusief uw beheerdersreferenties). Voer code uit, zoals de volgende om een nieuwe SQL Server-verificatieaanmelding te maken die lid is van de sysadmin vaste serverfunctie.

      CREATE LOGIN TempLogin WITH PASSWORD = '<strong_password>';
      ALTER SERVER ROLE sysadmin ADD MEMBER TempLogin;
      

      Waarschuwing

      Vervang <strong_password> door een sterk wachtwoord.

    4. Als uw SQL Server wordt uitgevoerd in de modus voor gemengde verificatie en u het wachtwoord van het sa-account opnieuw wilt instellen, maakt u verbinding met een queryvenster met behulp van Windows-verificatie (inclusief uw beheerdersreferenties). Wijzig het wachtwoord van het sa-account met de volgende syntaxis.

      ALTER LOGIN sa WITH PASSWORD = '<strong_password>';
      

      Waarschuwing

      Vervang <strong_password> door een sterk wachtwoord.

  7. Sluit Management Studio.

  8. In deze volgende stappen wordt SQL Server weer gewijzigd in de modus voor meerdere gebruikers. Selecteer in SQL Server Configuration Manager in het linkerdeelvenster SQL Server Services.

  9. Klik in het rechterdeelvenster met de rechtermuisknop op het exemplaar van SQL Server en selecteer vervolgens Eigenschappen.

  10. Selecteer op het tabblad Opstartparameters, in het vak Bestaande parameters, eerst -m en klik vervolgens op Verwijderen.

    Voor sommige eerdere versies van SQL Server is er geen tabblad Opstartparameters. Dubbelklik in dat geval op het tabblad Geavanceerd op Opstartparameters. De parameters worden geopend in een klein venster. Verwijder de ;-m die u eerder hebt toegevoegd en selecteer OK-.

  11. Klik met de rechtermuisknop op de servernaam en selecteer Opnieuw opstarten. Zorg ervoor dat u SQL Server Agent opnieuw start als u deze hebt gestopt voordat u SQL Server start in de modus voor één gebruiker.

Nu moet u normaal verbinding kunnen maken met een van de accounts die nu lid zijn van de sysadmin vaste serverfunctie.