Csatlakozás az SQL Serverhez, ha a rendszergazdákat kizárják

A következőkre vonatkozik:SQL Server

Ez a cikk azt ismerteti, hogyan nyerheti vissza az SQL Server adatbázismotorhoz való hozzáférést rendszergazdaként, ha ki van zárva. A rendszergazda az alábbi okok valamelyike miatt elveszítheti az SQL Server egy példányának hozzáférését:

  • A sysadmin rögzített kiszolgálói szerepkör tagjai közé tartozó összes bejelentkezést véletlenül eltávolították.

  • A sysadmin rögzített kiszolgálói szerepkör tagjai közé tartozó összes Windows-csoportot véletlenül eltávolították.

  • A sysadmin rögzített kiszolgáló-szerepkör tagjai azok a személyek, akik elhagyták a vállalatot, vagy nem érhetők el.

  • A sa fiók le van tiltva, vagy senki sem ismeri a jelszót.

Felbontás

A hozzáférési probléma megoldásához javasoljuk, hogy egyfelhasználós módban indítsa el az SQL Server-példányt. Ez a mód megakadályozza, hogy más kapcsolatok is létrejönjenek, miközben megpróbálja visszanyerni a hozzáférést. Innen csatlakozhat az SQL Server-példányhoz, és hozzáadhatja a bejelentkezést a sysadmin kiszolgálói szerepkörhöz. A megoldás részletes lépéseit a részletes utasítások szakaszban találja.

Az SQL Server-példányt egyfelhasználós módban is elindíthatja a parancssorból származó -m vagy -f beállításokkal. A számítógép helyi Rendszergazdák csoportjának bármely tagja csatlakozhat az SQL Server-példányhoz a sysadmin rögzített kiszolgálói szerepkör tagjaként.

Ha egyfelhasználós módban indítja el a példányt, állítsa le az SQL Server Agent szolgáltatást. Ellenkező esetben előfordulhat, hogy az SQL Server Agent először csatlakozik, és az egyetlen elérhető kapcsolatot veszi fel a kiszolgálóhoz, és letiltja a bejelentkezést.

Egy ismeretlen ügyfélalkalmazás is felveheti az egyetlen elérhető kapcsolatot, mielőtt bejelentkezhet. Annak érdekében, hogy ez ne történjen meg, használhatja a -m lehetőséget, majd egy alkalmazásnevet, hogy a megadott alkalmazás egyetlen kapcsolatára korlátozza a kapcsolatokat. Például, ha az SQL Server-t -mSQLCMD kapcsolattal indítják, az kapcsolódásokat egyetlen kapcsolatra korlátozza, amely sqlcmd ügyfélprogramként azonosítja magát. Ha a Management Studióban a Lekérdezésszerkesztőn keresztül szeretne csatlakozni, használja a -m"Microsoft SQL Server Management Studio - Query".

Fontos

Ne használja a -m-t egy alkalmazás nevét biztonsági funkcióként. Az ügyfélalkalmazások a kapcsolati sztring beállításain keresztül adják meg az alkalmazás nevét, így könnyen hamis névvel hamisítást végezhetnek rajta.

Az alábbi táblázat összefoglalja a példány egyfelhasználós módban való indításának különböző módjait a parancssorban.

Opció Leírás Mikor érdemes használni?
-m Egyetlen kapcsolatra korlátozva Nincsenek más felhasználók, akik csatlakozni próbálnának a példányhoz, vagy nem biztos abban az alkalmazásnévben, amelyet a példányhoz való csatlakozáskor használ.
-mSQLCMD Kapcsolatkötés korlátozása egyetlen kapcsolatra, amelynek azonosítania kell magát mint az sqlcmd ügyfélprogram. Azt tervezi, hogy sqlcmdhasználatával csatlakozik a példányhoz, és meg szeretné akadályozni, hogy más alkalmazások csak az egyetlen elérhető kapcsolatot használják.
-m"Microsoft SQL Server Management Studio - Query" Egyetlen kapcsolatra korlátozza a kapcsolatokat, amelyeknek azonosítaniuk kell magát a Microsoft SQL Server Management Studio – Lekérdezés alkalmazásként. A Példányhoz a Management Studióban a Lekérdezésszerkesztőn keresztül szeretne csatlakozni, és meg szeretné akadályozni, hogy más alkalmazások csak az egyetlen elérhető kapcsolatot használják.
-f Egyetlen kapcsolatra korlátozza a kapcsolatokat, és minimális konfigurációval indítja el a példányt Más konfiguráció megakadályozza a kezdést.

Részletes utasítások

Az SQL Server egyfelhasználós módban való elindításával kapcsolatos részletes útmutatásért tekintse meg az SQL Server egyfelhasználós módját.

A PowerShell használata

  1. Nyisson meg egy emelt szintű Windows PowerShell-parancssort.

  2. Állítsa be a szolgáltatásnevet és az SQL Server-példányt, valamint a Windows bejelentkezési változóit. Cserélje le ezeket az értékeket a környezetének megfelelő értékekre.

    Ha van alapértelmezett példány, használja a MSSQLSERVER példánynév nélkül.

    $service_name = "MSSQL`$instancename"
    $sql_server_instance = "machine_name\instance"
    $login_to_be_granted_access = "[CONTOSO\PatK]"
    
  3. Állítsa le az SQL Server szolgáltatást, hogy egyfelhasználós módban újra lehessen indítani az alábbi paranccsal:

    Ha van alapértelmezett példány, használja a MSSQLSERVER példánynév nélkül.

    net stop $service_name
    
  4. Indítsa el az SQL Server-példányt egyetlen felhasználói módban, és engedélyezze, hogy csak SQLCMD.exe csatlakozzon (/mSQLCMD).

    Jegyzet

    Ügyeljen arra, hogy nagybetűs SQLCMD

    Ha van alapértelmezett példány, használja a MSSQLSERVER példánynév nélkül.

    net start $service_name /f /mSQLCMD
    
  5. Az sqlcmd használatával hajtsa végre a CREATE LOGIN parancsot, majd ALTER SERVER ROLE parancsot. Ez a lépés feltételezi, hogy a Windowsba bejelentkezett egy olyan fiókkal, amely a Helyi rendszergazdák csoport tagja. Ez a lépés feltételezi, hogy lecserélte a tartomány és a bejelentkezési neveket azokra a hitelesítő adatokra, amelyekkel rendszergazda tagságot szeretne biztosítani.

    Ha van alapértelmezett példánya, használja a kiszolgáló nevét.

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

    Ha a következő hibaüzenet jelenik meg, győződjön meg arról, hogy ne legyen más sqlcmd az SQL Serverhez csatlakoztatva.

    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. Vegyes mód (nem kötelező): Ha az SQL Server-példány vegyes hitelesítési módban fut, a következőket is megteheti:

    1. Adjon sysadmin szerepkör-tagságot egy SQL Server bejelentkezéshez. A következőhöz hasonló kód végrehajtásával hozzon létre egy új SQL Server-hitelesítési bejelentkezést, amely a sysadmin rögzített kiszolgálói szerepkör tagja. Cserélje le a <strong_password> egy tetszőleges erős jelszóra.

      Ha van alapértelmezett példánya, használja a kiszolgáló nevét.

      $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. Ha az SQL Server-példány vegyes hitelesítési módban fut, és egy engedélyezett sa-fiók jelszavát szeretné visszaállítani. Módosítsa az sa-fiók jelszavát az alábbi szintaxissal. Mindenképpen cserélje le a <strong_password> egy tetszőleges erős jelszóra:

      Ha van alapértelmezett példánya, használja a kiszolgáló nevét.

      $strong_password = "<strong_password>"
      sqlcmd.exe -E -S $sql_server_instance -Q "ALTER LOGIN sa WITH PASSWORD = $strong_password; "
      
  7. Sql Server-példány leállítása és újraindítása többfelhasználós módban

    Ha van alapértelmezett példány, használja a MSSQLSERVER példánynév nélkül.

    net stop $service_name
    net start $service_name
    

Az SQL Server Configuration Manager és a Management Studio (SSMS) használata

Ezek az utasítások a következőket feltételezik:

  • Az SQL Server Windows 8 vagy újabb rendszeren fut. Adott esetben az SQL Server vagy a Windows korábbi verzióihoz enyhe módosításokat is biztosítunk.

  • Az SQL Server Management Studio telepítve van a számítógépre.

Hajtsa végre ezeket az utasításokat, miközben bejelentkezett a Windowsba a helyi rendszergazdák csoportjának tagjaként.

  1. A Windows Start menüjében kattintson a jobb gombbal az SQL Server Configuration Manager ikonra, és válassza a Futtatás rendszergazdaként lehetőséget a rendszergazdai hitelesítő adatok Configuration Managernek való átadásához.

  2. Az SQL Server Configuration Manager bal oldali ablaktábláján válassza SQL Server Serviceslehetőséget. A jobb oldali panelen keresse meg az SQL Server-példányt. (Az SQL Server alapértelmezett példánya tartalmazza az (MSSQLSERVER) a számítógép neve után. Az elnevezett példányok nagybetűsen jelennek meg, ugyanazzal a névvel, mint a regisztrált kiszolgálókon.) Kattintson a jobb gombbal az SQL Server példányára, majd válassza a Tulajdonságoklehetőséget.

  3. Az Indítási paraméterek lap Indítási paraméter megadása mezőjébe írja be a -m, majd válassza hozzáadása lehetőséget. Ez egy kötőjel, majd egy kisbetűs m.

    Az SQL Server egyes korábbi verzióiban nincs Indítási paraméterek fül. Ebben az esetben a Speciális fülön dupla kattintással nyissa meg a Indítási paraméterek. A paraméterek egy kis ablakban nyílnak meg. Ügyeljen arra, hogy ne módosítsa a meglévő paramétereket. A végén adjon hozzá egy új paramétert ;-m, majd válassza OKlehetőséget. (Ez egy pontosvessző, majd egy kötőjel, majd kisbetű m.)

  4. Válassza OKlehetőséget, majd az újraindítás után kattintson a jobb gombbal a kiszolgáló nevére, majd válassza a Újraindításlehetőséget.

  5. Az SQL Server újraindítása után a kiszolgáló egyfelhasználós módban lesz. Győződjön meg arról, hogy az SQL Server-ügynök nem fut. Ha elindult, az egyetlen kapcsolatot használja.

  6. A Windows Start menüjében kattintson a jobb gombbal a Management Studio ikonra, és válassza a Futtatás rendszergazdakéntlehetőséget. Ez átadja a rendszergazdai hitelesítő adatokat az SSMS-nek.

    A Windows korábbi verziói esetében a Futtatás rendszergazdaként beállítás almenüként jelenik meg.

    Egyes konfigurációkban az SSMS több kapcsolatot próbál létrehozni. Több kapcsolat meghiúsul, mert az SQL Server egyfelhasználós módban van. A forgatókönyv alapján hajtsa végre az alábbi műveletek egyikét.

    1. Csatlakozzon az Object Explorerhez a Windows-hitelesítéssel, amely tartalmazza a rendszergazdai hitelesítő adatokat. Nyissa le Biztonság, nyissa le Bejelentkezések, majd kattintson duplán saját bejelentkezésére. A Kiszolgálói szerepkörök lapon válassza sysadmin, majd válassza OKlehetőséget.

    2. Az Object Explorerrel való kapcsolódás helyett windowsos hitelesítéssel (amely magában foglalja a rendszergazdai hitelesítő adatokat is) csatlakozik egy lekérdezési ablakhoz. (Csak akkor tud így csatlakozni, ha nem csatlakozott az Object Explorerhez.) A következőhöz hasonló kód végrehajtásával adjon hozzá egy új Windows-hitelesítési bejelentkezést, amely a sysadmin rögzített kiszolgálói szerepkör tagja. Az alábbi példa egy CONTOSO\PatKnevű tartományfelhasználót ad hozzá.

      CREATE LOGIN [CONTOSO\PatK] FROM WINDOWS;
      ALTER SERVER ROLE sysadmin ADD MEMBER [CONTOSO\PatK];
      
    3. Ha az SQL Server vegyes hitelesítési módban fut, csatlakozzon egy lekérdezési ablakhoz Windows-hitelesítéssel (amely tartalmazza a rendszergazdai hitelesítő adatokat). A következőhöz hasonló kód végrehajtásával hozzon létre egy új SQL Server-hitelesítési bejelentkezést, amely a sysadmin rögzített kiszolgálói szerepkör tagja.

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

      Figyelmeztetés

      Cserélje le a <strong_password> egy erős jelszóra.

    4. Ha az SQL Server vegyes hitelesítési módban fut, és alaphelyzetbe szeretné állítani a sa-fiók jelszavát, csatlakozzon egy lekérdezési ablakhoz a Windows-hitelesítés használatával (amely tartalmazza a rendszergazdai hitelesítő adatokat). Módosítsa a sa-fiók jelszavát az alábbi szintaxissal.

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

      Figyelmeztetés

      Cserélje le a <strong_password> egy erős jelszóra.

  7. Zárja be a Management Studio alkalmazást.

  8. A következő néhány lépésben az SQL Server visszavált a többfelhasználós üzemmódra. Az SQL Server Configuration Manager bal oldali ablaktábláján válassza SQL Server Serviceslehetőséget.

  9. A jobb oldali ablaktáblán kattintson a jobb gombbal az SQL Server-példányra, majd válassza a Tulajdonságoklehetőséget.

  10. Az Indítási paraméterek lapon, a Meglévő paraméterek mezőben válassza a -m, majd kattintson az Eltávolításgombra.

    Az SQL Server egyes korábbi verzióiban nincs Indítási paraméterek fül. Ebben az esetben a Speciális fülön dupla kattintással nyissa meg a Indítási paraméterek. A paraméterek egy kis ablakban nyílnak meg. Távolítsa el a korábban hozzáadott ;-m, majd válassza OKlehetőséget.

  11. Kattintson a jobb gombbal a kiszolgáló nevére, majd válassza a Újraindításlehetőséget. Győződjön meg arról, hogy újra elindítja az SQL Server-ügynököt, ha leállította, mielőtt egyfelhasználós módban indítja el az SQL Servert.

Most már képesnek kell lennie arra, hogy normálisan csatlakozzon az egyik fiókhoz, amely most a sysadmin rögzített kiszolgálói szerepkör tagja.