Zdarza się, iż problemy konfiguracyjne naszego serwera SQL uniemożliwiają podłączenie się do niego. Wtedy też z pomocą przychodzi nam uruchomienie usługi w tak zwanym trybie minimalnej konfiguracji (ang. minimal configuration mode). Postanowiłem napisać na ten temat parę słów i pokazać jak coś takiego skonfigurować. Zapraszam do lektury.
Na samym początku przypuśćmy, że coś źle skonfigurowaliśmy i nie możemy się połączyć lub co gorsza nasza usługa “nie wstaje”. Wtedy też należy wejść do Configuration Managera (o którym napisałem parę słów tutaj) i na zakładce Startup Parameters dodać przełącznik -f, który uruchamia instancję w trybie minimalnej konfiguracji. Po tych zabiegach należy zrestartować całą instancję.
Tak więc po restarcie instancja będzie działać w trybie minimalnej konfiguracji co niesie ze sobą następujące konsekwencje:
- włączony został tzw. Single User Mode czyli tylko pojedynczy użytkownik może się podłączyć do instancji
- zdalny dostęp do serwera jest niemożliwy – trzeba połączyć się bezpośrednio z poziomu serwera na którym działa serwer
- mechanizm checkpoint został wyłączony
- mechanizm Read-Ahead został wyłączony (link)
- jeżeli zostały zdefiniowane jakieś procedury startowe to nie zostaną uruchomione
Tak więc mając naszą instancję uruchomioną w pożądanym trybie możemy się do niej połączyć. Do tego celu możemy użyć np. linii komend tj. sqlcmd lub standardowego Management Studio. W naszym przykładzie użyjemy ich obu poczynając od tego drugiego gdyż mimo wszystko jesteśmy do niego zdecydowanie bardziej przyzwyczajeni niż do sqlcmd. Tak więc włączmy SSMS jako administrator i spróbujmy zobaczyć okno Object Explorer oraz okno zapytania. Niestety zakończy się to błędem:
Dzieje się tak dlatego, że okno zapytania i Object Explorer nawiązują dwa różne połączenia, a jak już wspomniałem wcześniej, instancja działająca w omawianym trybie umożliwia nawiązania tylko jednego połączenia. Tak więc zrestartujmy SSMS i przy oknie wyboru połączenia kliknijmy Cancel:
Dzięki temu SSMS nie nawiąże połączeń automatycznie dla Object Explorera, który nie interesuje nas tak naprawdę. Zamiast tego otwórzmy nowe okno zapytań do bazy danych:
Naszym oczom ukaże się pojedyncze okno zapytań gdzie możemy wykonywać zapytania, które naprawią naszą instancję używając np. sp_configure lub np. ALTER DATABASE:
Warto pamiętać o tym, że np. jeżeli działają inne usługi które łączą się do SQL Server jak np. Agent to po uruchomieniu instancji mogą one zająć jedyne dostępne połączenie – więc warto upewnić się, że nic takiego się nie stanie. Zaleca się stosowanie SQLCMD do połączenia do bazy w trybie z minimalną konfiguracją dlatego też pokażę, że i linia komend nie jest straszna – wystarczy uruchomić wiersz poleceń i tam wpisać:
sqlcmd -S localhost\sql16
Oczywiście localhost\sql16 to moja instancja i każdy powinien wpisać swoją. Taki zapis pozwala połączyć się do instancji domyślnej używając uwierzytelnienia Windows – w przypadku gdy mamy do czynienia z instancją domyślną lub używamy uwierzytelnienia SQL Server musimy użyć innych przełączników linii komend (aby się z nimi zapoznać wystarczy w oknie linii komend wpisać sqlcmd /?). Znak zachęty pod postacią 1> oznacza, iż możemy wykonywać nasze zapytania:
Pamiętajmy, że w tym oknie każde zapytanie musimy zakończyć separatorem zapytań (czyli domyślnie GO):
Tak więc dzięki temu podejściu możemy rozwiązać wiele problemów jak np. błędnie skonfigurowana ścieżka do plików bazy TempDB opisana tutaj. Po naprawie wystarczy wyłączyć parametr startowy i zrestartować naszą instancję. Myślę, że warto znać ten mechanizm gdyż niejednokrotnie może być przydatny w awaryjnych sytuacjach.
- Avoiding Issues: Monitoring Query Pushdowns in Databricks Federated Queries - October 27, 2024
- Microsoft Fabric: Using Workspace Identity for Authentication - September 25, 2024
- Executing SQL queries from Azure DevOps using Service Connection credentials - August 28, 2024
Last comments