Serwisanci dostępni teraz · czynne całą dobę, także w weekendy i świętaWarszawa i okolice · dojazd bezpłatny
Darmowa diagnoza laptopa
Darmowa diagnoza laptopa
Dojazd do klienta bezpłatnie
Dojazd do klienta bezpłatnie
Laptopy zastępcze bezpłatnie
Laptopy zastępcze bezpłatnie
Odbiór i zwrot sprzętu bezpłatnie
Odbiór i zwrot sprzętu bezpłatnie

SQL Server w trybie single-user

Termin Definicja
SQL Server w trybie single-user

Tryb single-user pozwala połączyć się z instancją tylko jednemu klientowi naraz, wykorzystywany przy operacjach naprawczych.

Zakres działania trybu single-user w SQL Server

Tryb single-user w Microsoft SQL Server ogranicza dostęp do uruchomionej instancji do jednego połączenia klienckiego naraz. Jest to ustawienie dotyczące całej instancji, a nie pojedynczej bazy danych. Po uruchomieniu SQL Server z parametrem startowym -m silnik akceptuje tylko jedno połączenie użytkownika. Połączenie może pochodzić między innymi z narzędzia administracyjnego, programu wykorzystującego sterownik SQL Server albo narzędzia wiersza poleceń.

Tryb ten służy przede wszystkim do czynności administracyjnych wykonywanych wtedy, gdy zwykły dostęp do instancji powinien zostać czasowo zablokowany. Może być potrzebny podczas odzyskiwania dostępu administracyjnego, naprawy konfiguracji, uruchamiania operacji serwisowych albo diagnozowania problemu z normalnym startem silnika. Nie jest to mechanizm zwiększający wydajność, izolujący jedną bazę ani sposób na równoległą pracę kilku użytkowników z ograniczonymi uprawnieniami.

Połączenie administracyjne i parametr -m

Parametr -m przekazuje silnikowi SQL Server informację, że instancja ma rozpocząć pracę w trybie jednego użytkownika. Po jego zastosowaniu trzeba doprowadzić do uruchomienia dokładnie tego klienta, który ma wykonać operację administracyjną. Jeżeli pierwsze połączenie zostanie zajęte przez nieodpowiednie narzędzie, kolejne próby mogą kończyć się odmową dostępu. Dotyczy to także automatycznych połączeń wykonywanych w tle przez programy administracyjne.

Z tego powodu SQL Server obsługuje wariant parametru wskazujący nazwę aplikacji, na przykład -mSQLCMD. Taki zapis pozwala ograniczyć połączenie w trybie single-user do klienta rozpoznawanego jako SQLCMD. W praktyce zmniejsza to ryzyko, że pojedyncze połączenie zostanie przejęte przez SQL Server Agent, okno Object Explorer albo inny komponent uruchamiający sesję automatycznie. Nazwa musi odpowiadać wartości zgłaszanej przez konkretną aplikację w połączeniu, dlatego przed użyciem należy sprawdzić sposób identyfikacji danego klienta.

Do wykonania zadania administracyjnego można użyć narzędzia sqlcmd, łącząc się z właściwą instancją i podając wymagane uwierzytelnianie. Należy pamiętać, że tryb single-user nie omija kontroli uprawnień. Użytkownik nadal musi mieć odpowiednie prawa w systemie Windows albo poprawne konto SQL Server, zależnie od wybranego modelu uwierzytelniania. Sam fakt uruchomienia instancji z -m nie nadaje automatycznie uprawnień sysadmin.

Różnica między instancją a bazą ustawioną na SINGLE_USER

SQL Server ma również opcję bazy danych o nazwie SINGLE_USER, ustawianą instrukcją ALTER DATABASE. Jest to inny mechanizm niż start instancji z parametrem -m. Tryb bazy danych ogranicza liczbę jednoczesnych użytkowników konkretnej bazy, podczas gdy parametr -m ogranicza dostęp do całej instancji. Pomylenie tych dwóch ustawień może prowadzić do błędnej diagnozy, ponieważ instancja może działać normalnie, a tylko jedna baza może oczekiwać na pojedyncze połączenie.

Przy zmianie trybu bazy danych często stosuje się opcję WITH ROLLBACK IMMEDIATE, aby zakończyć aktywne transakcje i wymusić odłączenie bieżących użytkowników. Należy używać jej świadomie, ponieważ niezapisane transakcje mogą zostać wycofane. Samo ustawienie bazy jako single-user nie oznacza również, że dowolne okno narzędzia administracyjnego bez problemu wykona operację. Narzędzie może otworzyć dodatkową sesję do odczytu metadanych lub podglądu obiektów i w ten sposób zająć jedyne dostępne miejsce.

Po zakończeniu pracy bazę należy przywrócić do właściwego trybu wielodostępnego, jeżeli ograniczenie było tylko czasowe. W przeciwnym razie zwykłe aplikacje mogą nadal otrzymywać błędy związane z brakiem dostępnych połączeń. Przed zmianą ustawień warto ustalić, czy problem dotyczy instancji, konkretnej bazy, konta użytkownika, usługi SQL Server, czy aplikacji próbującej połączyć się automatycznie.

Bezpieczna kolejność czynności serwisowych

Diagnostyka problemu z trybem single-user powinna rozpocząć się od identyfikacji instancji, jej stanu oraz parametrów startowych. Trzeba sprawdzić, czy parametr -m został rzeczywiście dodany do konfiguracji uruchamiania usługi, a następnie przeanalizować dziennik SQL Server pod kątem informacji o trybie jednego użytkownika i odrzuconych połączeniach. W przypadku instancji nazwanej należy potwierdzić, że klient łączy się z właściwą nazwą instancji, a nie z inną lokalną lub domyślną instancją.

Podczas pracy z jednym połączeniem należy zamknąć aplikacje, usługi i narzędzia, które mogą korzystać z SQL Server. Szczególną uwagę trzeba zwrócić na SQL Server Agent oraz narzędzia graficzne, które mogą tworzyć więcej niż jedną sesję. Przy operacji odzyskiwania dostępu lub zmiany konfiguracji zaleca się użyć jednego, kontrolowanego klienta, wykonać wymagane polecenia, sprawdzić ich wynik, a następnie usunąć parametr -m i uruchomić instancję w zwykłym trybie.

Przed zmianą trybu pracy trzeba ocenić wpływ na aplikacje korzystające z baz danych. Odłączenie sesji może przerwać zapytania i transakcje, a błędna zmiana konfiguracji może uniemożliwić ponowne uruchomienie usługi. Jeżeli działanie jest podejmowane na komputerze użytkownika, należy dodatkowo rozdzielić problem samego silnika SQL Server od problemu aplikacji, sterownika, zapory sieciowej lub danych uwierzytelniających. Tryb single-user jest narzędziem administracyjnym SQL Server, a nie uniwersalną metodą naprawy każdego błędu połączenia.

+48 22 100 48 29Zadzwoń teraz · serwisant w 1 godzinę