Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:programu SQL Server
W tym artykule opisano, jak odzyskać dostęp do silnika bazy danych programu SQL Server jako administrator systemu, gdy zostaniesz zablokowany. Administrator systemu może utracić dostęp do wystąpienia programu SQL Server z jednego z następujących powodów:
Wszystkie identyfikatory logowania należące do sysadmin stałej roli serwera zostały usunięte przez pomyłkę.
Wszystkie grupy systemu Windows, które są członkami stałej roli serwera sysadmin, zostały usunięte przez pomyłkę.
Loginy należące do stałej roli serwera sysadmin dotyczą osób, które opuściły firmę lub które nie są dostępne.
Konto
sa
jest wyłączone lub nikt nie zna hasła.
Rezolucja
Aby rozwiązać problem z dostępem, zalecamy uruchomienie programu SQL Server w trybie pojedynczego użytkownika. Ten tryb uniemożliwia występowanie innych połączeń podczas próby odzyskania dostępu. W tym miejscu możesz połączyć się ze swoim wystąpieniem SQL Server i dodać login do roli serwera sysadmin. Szczegółowe instrukcje dotyczące tego rozwiązania znajdują się w sekcji instrukcje krok po kroku.
Można uruchomić instancję programu SQL Server w trybie pojedynczego użytkownika przy użyciu opcji -m
lub -f
z wiersza polecenia. Każdy członek lokalnej grupy Administratorzy na komputerze może następnie połączyć się z instancją SQL Server jako członek stałej roli serwera sysadmin.
Po uruchomieniu wystąpienia w trybie pojedynczego użytkownika zatrzymaj usługę SQL Server Agent. W przeciwnym razie agent programu SQL Server może nawiązać połączenie jako pierwszy, wykorzystując jedyne dostępne połączenie z serwerem i uniemożliwiając Ci zalogowanie się.
Istnieje również możliwość, aby nieznana aplikacja kliencka mogła pobrać jedyne dostępne połączenie, zanim będzie można się zalogować. Aby temu zapobiec, możesz użyć opcji -m
, po której następuje nazwa aplikacji, aby ograniczyć połączenia z jednym połączeniem z określonej aplikacji. Na przykład uruchomienie programu SQL Server z -mSQLCMD
ogranicza połączenia do jednego połączenia, które identyfikuje się jako klient programu sqlcmd. Aby nawiązać połączenie za pośrednictwem Edytora zapytań w programie Management Studio, użyj -m"Microsoft SQL Server Management Studio - Query"
.
Ważny
Nie używaj -m
z nazwą aplikacji jako funkcją zabezpieczeń. Aplikacje klienckie określają nazwę aplikacji za pomocą ustawień parametrów połączenia, więc można łatwo podszywać się przy użyciu fałszywej nazwy.
Poniższa tabela podsumowuje różne sposoby uruchamiania wystąpienia w trybie pojedynczego użytkownika w wierszu poleceń.
Opcja | Opis | Kiedy należy używać |
---|---|---|
-m |
Ogranicza połączenia do jednego połączenia | Nie ma innych użytkowników próbujących nawiązać połączenie z wystąpieniem, lub nie jesteś pewien nazwy aplikacji, której używasz do nawiązania połączenia z wystąpieniem. |
-mSQLCMD |
Ogranicza liczbę połączeń do jednego, które musi się identyfikować jako program kliencki sqlcmd. | Planujesz nawiązać połączenie z wystąpieniem za pomocą sqlcmdi chcesz uniemożliwić innym aplikacjom używanie jedynego dostępnego połączenia. |
-m"Microsoft SQL Server Management Studio - Query" |
Ogranicza połączenia do jednego połączenia, które musi identyfikować się jako aplikacja Microsoft SQL Server Management Studio — zapytanie. | Planujesz nawiązać połączenie z wystąpieniem za pośrednictwem Edytora zapytań w programie Management Studio i chcesz uniemożliwić innym aplikacjom pobieranie jedynego dostępnego połączenia. |
-f |
Ogranicza połączenia do jednego i uruchamia wystąpienie w minimalnej konfiguracji | Niektóre inne konfiguracje uniemożliwiają rozpoczęcie pracy. |
Instrukcje krok po kroku
Aby uzyskać instrukcje krok po kroku dotyczące uruchamiania programu SQL Server w trybie pojedynczego użytkownika, zobacz Uruchamianie programu SQL Server w trybie Single-User.
Korzystanie z programu PowerShell
Opcja 1. Uruchamianie kroków bezpośrednio w notesie wykonywalnym przy użyciu narzędzia Azure Data Studio
Notatka
Przed podjęciem próby otwarcia tego notesu sprawdź, czy program Azure Data Studio jest zainstalowany na komputerze lokalnym. Aby zainstalować program Azure Data Studio, zobacz Dowiedz się, jak zainstalować program Azure Data Studio.
Opcja 2. Ręczne wykonywanie kroków
Otwórz wiersz polecenia programu Windows PowerShell z podwyższonym poziomem uprawnień.
Skonfiguruj nazwę usługi, instancję SQL Server oraz zmienne logowania Windows. Zastąp te wartości wartościami zgodnymi ze środowiskiem.
Jeśli masz wystąpienie domyślne, użyj
MSSQLSERVER
bez nazwy wystąpienia.$service_name = "MSSQL`$instancename" $sql_server_instance = "machine_name\instance" $login_to_be_granted_access = "[CONTOSO\PatK]"
Zatrzymaj usługę SQL Server, aby można ją było uruchomić ponownie w trybie pojedynczego użytkownika, używając następującego polecenia:
Jeśli masz wystąpienie domyślne, użyj
MSSQLSERVER
bez nazwy wystąpienia.net stop $service_name
Teraz uruchom wystąpienie programu SQL Server w trybie pojedynczego użytkownika i zezwól na połączenie tylko SQLCMD.exe (
/mSQLCMD
):Notatka
Pamiętaj, aby użyć wielkich liter
SQLCMD
Jeśli masz wystąpienie domyślne, użyj
MSSQLSERVER
bez nazwy wystąpienia.net start $service_name /f /mSQLCMD
Za pomocą sqlcmd wykonaj polecenie
CREATE LOGIN
, a następnieALTER SERVER ROLE
polecenie. W tym kroku przyjęto założenie, że zalogowano się do systemu Windows przy użyciu konta, które jest członkiem grupy Administratorzy lokalni. W tym kroku przyjęto założenie, że nazwy domen i logowania zostały zastąpione poświadczeniami dającymi członkostwo administratora systemu.Jeśli masz wystąpienie domyślne, użyj nazwy serwera.
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; "
Jeśli wystąpi następujący błąd, upewnij się, że żadne inne sqlcmd nie są połączone z programem 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.
Tryb mieszany (opcjonalnie): Jeśli Twoje wystąpienie programu SQL Server działa w trybie mieszanym uwierzytelniania, możesz również:
Przyznaj uprawnienia roli administratora systemu loginowi programu SQL Server. Wykonaj kod, taki jak poniżej, aby utworzyć nowy identyfikator logowania uwierzytelniania programu SQL Server, który jest członkiem sysadmin stałej roli serwera. Zastąp
<strong_password>
wybranym silnym hasłem.Jeśli masz wystąpienie domyślne, użyj nazwy serwera.
$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; "
Ponadto, jeśli instancja SQL Server jest uruchomiona w trybie uwierzytelniania mieszanego i chcesz zresetować hasło dla aktywnego konta
sa
. Zmień hasło konta sa przy użyciu następującej składni. Pamiętaj, aby zastąpić<strong_password>
silnym hasłem:Jeśli masz wystąpienie domyślne, użyj nazwy serwera.
$strong_password = "<strong_password>" sqlcmd.exe -E -S $sql_server_instance -Q "ALTER LOGIN sa WITH PASSWORD = $strong_password; "
Zatrzymaj i uruchom ponownie instancję serwera SQL w trybie wielu użytkowników
Jeśli masz wystąpienie domyślne, użyj
MSSQLSERVER
bez nazwy wystąpienia.net stop $service_name net start $service_name
Korzystanie z programu SQL Server Configuration Manager i programu Management Studio (SSMS)
W poniższych instrukcjach przyjęto założenie:
Program SQL Server działa w systemie Windows 8 lub nowszym. Niewielkie korekty dla wcześniejszych wersji programu SQL Server lub Windows są udostępniane w stosownych przypadkach.
Program SQL Server Management Studio jest zainstalowany na komputerze.
Wykonaj te instrukcje podczas logowania się do systemu Windows jako członek lokalnej grupy administratorów.
W menu Start systemu Windows kliknij prawym przyciskiem myszy ikonę menedżera konfiguracji programu SQL Server i wybierz Uruchom jako administrator, aby przekazać poświadczenia administratora do programu Configuration Manager.
W Menedżerze konfiguracji programu SQL Server, w okienku z lewej strony, wybierz pozycję usługi SQL Server. W okienku po prawej stronie znajdź swoje wystąpienie programu SQL Server. (Domyślne wystąpienie programu SQL Server obejmuje (MSSQLSERVER) po nazwie komputera. Nazwane wystąpienia są wyświetlane wielkimi literami o takiej samej nazwie, jaką mają w Zarejestrowanych Serwerach. Kliknij prawym przyciskiem myszy wystąpienie programu SQL Server, a następnie wybierz pozycję Właściwości.
Na karcie parametry uruchamiania w polu Określ parametr uruchamiania wpisz
-m
, a następnie wybierz pozycję Dodaj. (To kreska, a następnie mała litera m.)W przypadku niektórych wcześniejszych wersji programu SQL Server nie ma karty Parametry uruchamiania. W takim przypadku na karcie Zaawansowane kliknij dwukrotnie Parametry uruchamiania. Parametry są otwierane w małym oknie. Należy zachować ostrożność, aby nie zmieniać żadnych istniejących parametrów. Na samym końcu dodaj nowy parametr
;-m
, a następnie wybierz pozycję OK. (To średnik, a następnie kreska, a następnie mała litera m.)Wybierz pozycję OK, a po ponownym uruchomieniu komunikatu kliknij prawym przyciskiem myszy nazwę serwera, a następnie wybierz pozycję Uruchom ponownie.
Po ponownym uruchomieniu programu SQL Server serwer będzie w trybie pojedynczego użytkownika. Upewnij się, że program SQL Server Agent nie jest uruchomiony. Jeśli zostanie uruchomiona, zabierze Twoje jedyne połączenie.
W menu Start systemu Windows kliknij prawym przyciskiem myszy ikonę programu Management Studio i wybierz pozycję Uruchom jako administrator. Twoje poświadczenia administratora zostaną przekazane do programu SSMS.
W przypadku wcześniejszych wersji systemu Windows opcja Uruchom jako administrator jest wyświetlana jako podmenu.
W niektórych konfiguracjach program SSMS próbuje nawiązać kilka połączeń. Wiele połączeń kończy się niepowodzeniem, ponieważ program SQL Server jest w trybie pojedynczego użytkownika. W zależności od scenariusza wykonaj jedną z następujących akcji.
Nawiąż połączenie z Eksploratorem obiektów przy użyciu uwierzytelniania systemu Windows, które obejmuje poświadczenia administratora. Rozwiń węzeł Security, rozwiń węzeł Loginsi dwukrotnie kliknij swoje własne logowanie. Na stronie role serwera wybierz pozycję sysadmin, a następnie wybierz pozycję OK.
Zamiast łączyć się z Eksploratorem obiektów, połącz się z oknem zapytania przy użyciu uwierzytelniania systemu Windows (w tym poświadczeń administratora). (Możesz nawiązać połączenie tylko w ten sposób, jeśli nie nawiązaliśmy połączenia z Eksploratorem obiektów). Wykonaj kod, taki jak poniżej, aby dodać nowy identyfikator logowania uwierzytelniania systemu Windows, który jest członkiem sysadmin stałej roli serwera. Poniższy przykład dodaje użytkownika domeny o nazwie
CONTOSO\PatK
.CREATE LOGIN [CONTOSO\PatK] FROM WINDOWS; ALTER SERVER ROLE sysadmin ADD MEMBER [CONTOSO\PatK];
Jeśli program SQL Server jest uruchomiony w trybie uwierzytelniania mieszanego, połącz się z oknem zapytania przy użyciu uwierzytelniania systemu Windows (w tym poświadczeń administratora). Wykonaj kod, taki jak poniżej, aby utworzyć nowy login uwierzytelniania SQL Server, który jest członkiem sysadmin ustalonej roli serwera.
CREATE LOGIN TempLogin WITH PASSWORD = '<strong_password>'; ALTER SERVER ROLE sysadmin ADD MEMBER TempLogin;
Ostrzeżenie
Zastąp <strong_password> silnym hasłem.
Jeśli program SQL Server jest uruchomiony w trybie uwierzytelniania mieszanego i chcesz zresetować hasło konta
sa
, połącz się z oknem zapytania przy użyciu uwierzytelniania systemu Windows (w tym poświadczeń administratora). Zmień hasło kontasa
przy użyciu następującej składni.ALTER LOGIN sa WITH PASSWORD = '<strong_password>';
Ostrzeżenie
Zastąp <strong_password> silnym hasłem.
Zamknij program Management Studio.
Te kilka następnych kroków zmienia program SQL Server z powrotem na tryb wielu użytkowników. W Menedżerze konfiguracji SQL Server w okienku po lewej stronie wybierz pozycję SQL Server Services.
W prawym panelu kliknij prawym przyciskiem myszy wystąpienie programu SQL Server, a następnie wybierz pozycję Właściwości.
Na karcie parametry uruchamiania w polu Istniejące parametry wybierz pozycję
-m
, a następnie wybierz pozycję Usuń.W przypadku niektórych wcześniejszych wersji programu SQL Server nie ma karty Parametry uruchamiania. W takim przypadku na karcie Zaawansowane dwukrotnie kliknij Parametry uruchamiania. Parametry są otwierane w małym oknie. Usuń dodane wcześniej
;-m
, a następnie wybierz OK.Kliknij prawym przyciskiem myszy nazwę serwera, a następnie wybierz pozycję Uruchom ponownie. Pamiętaj, aby ponownie uruchomić agenta programu SQL Server, jeśli został zatrzymany przed uruchomieniem programu SQL Server w trybie pojedynczego użytkownika.
Teraz powinieneś być w stanie nawiązać normalne połączenie z jednym z kont, które jest teraz członkiem roli sysadmin na stałe przypisanej do serwera.
Powiązana zawartość
- Konfigurowanie opcji uruchamiania serwera
- Opcje uruchamiania usługi silnika bazy danych