Potrzebuję pomocy w ustawieniu bazy danych, która została przywrócona SINGLE_USER
trybie na MULTI_USER
. Za każdym razem, gdy biegam
ALTER DATABASE BARDABARD
SET MULTI_USER;
GO
Otrzymuję ten błąd:
Obecnie nie można wprowadzać zmian w stanie lub opcjach bazy danych „BARDABARD”.
Baza danych znajduje się w trybie pojedynczego użytkownika, a użytkownik jest obecnie z nią połączony.
Musi być w SINGLE_USER
trybie innym niż tryb, aby ustawić go w innym trybie, ale nie mogę ustawić bazy danych w innym trybie, gdy jest w SINGLE_USER
trybie.
sql
sql-server
Rahna1970418
źródło
źródło
master
) , Gdy okno zapytania jest aktywne. Jeśli nadal sprawia ci to ból głowy, zamknij wszystkie inne okna zapytań i wybierz bazę danych niewinnego systemu, taką jak lub z menu rozwijanego w jednym oknie, które opuściłeś.master
tempdb
Ten komunikat o błędzie ogólnie oznacza, że do DB są podłączone inne procesy. Spróbuj uruchomić to, aby zobaczyć, które są połączone:
To zwróci ci proces, a następnie powinieneś być w stanie uruchomić:
Gdzie [xxx] to
spid
proces, który próbujesz zabić.Następnie możesz uruchomić powyższą instrukcję.
Powodzenia.
źródło
Możesz dodać opcję natychmiastowego wycofania zmiany.
źródło
ROLLBACK IMMEDIATE
dokładnie robi?ALTER DATABASE
transakcji wyciągu, w przeciwieństwie do tego,WITH ROLLBACK X SECONDS
które czeka na zakończenie transakcji przed wymuszeniem ich wycofania lub czekania w nieskończoność, aż nie będzie żadnych oczekujących transakcji (uważam, że jest to domyślne, ale w tej chwili nie można znaleźć w dokumencie). Jest to odpowiednik „zatrzymaj wszystko, co teraz robisz i zrób to”.SQL Server 2012:
kliknij prawym przyciskiem myszy
DB > Properties > Options > [Scroll down] State > RestrictAccess > select Multi_user
i kliknij OK.Voila!
źródło
Miałem ten sam problem i został rozwiązany przez następujące kroki - odniesienie: http://giladka8.blogspot.com.au/2011/11/database-is-in-single-user-mode-and.html
źródło
To działało dobrze dla mnie.
Krok 1. Kliknij silnik bazy danych prawym przyciskiem myszy, kliknij monitor aktywności i sprawdź, który proces ma połączenie. Zabij tego konkretnego użytkownika i natychmiast wykonaj zapytanie.
Krok 2.
i odśwież bazę danych.
źródło
Naprawdę miałem problem polegający na tym, że moja db była właściwie zablokowana przez procesy i warunki wyścigu, zanim doszło do odświeżenia jednego polecenia, a oni ponownie go zablokowali ... Musiałem uruchomić następujące polecenia od tyłu do tyłu w SSMS i przełączyłem mnie w tryb offline, a następnie przywróciłem i wróciłem do trybu online. Dwa zapytania, w których:
Pierwszy raz:
Następnie natychmiast po (w drugim oknie zapytania):
Zrobiłem to, czego potrzebowałem, a następnie wróciłem do trybu online. Dziękuję wszystkim, którzy napisali te utwory, abym połączył i rozwiązał mój problem.
źródło
Najlepszym rozwiązaniem może być zalogowanie się bezpośrednio na serwerze zamiast korzystania z SQL Management Studio
Upewnij się, że konto, na które logujesz się jako dbowner dla bazy danych, którą chcesz ustawić na MULTI_USER. Zaloguj się jako sa (przy użyciu uwierzytelniania serwera SQL), jeśli możesz
Jeśli twoja baza danych jest używana przez IIS, zatrzymaj stronę internetową i pulę aplikacji, która z niej korzysta - może to być proces, który jest podłączony i blokuje ci przejście do MULTI_USER
Sprawdź tutaj, jeśli nadal masz problemy:
http://www.sqlservercentral.com/blogs/pearlknows/2014/04/07/help-im-stuck-in-single-user-mode-and-can-t-get-out/
JAKO OSTATNIA ALTERNATYWA - Jeśli wypróbowałeś wszystko powyżej i robisz się zdesperowany, możesz spróbować zatrzymać instancję serwera SQL i uruchomić ją ponownie
źródło
Właśnie naprawiłem, wykonując następujące kroki, to może ci pomóc.
Krok 1
Krok 2
Krok 3
Krok 4
Krok: 5
Następnie uruchom następujące zapytanie.
Cieszyć się...!
źródło
Poniższy kod działał dla mnie, gdy nie znałem konkretnego identyfikatora SPID, który został użyty do przejścia w
singleuser
tryb.źródło
a następnie przywrócić go do życia
źródło
To działało dobrze dla mnie
Mam nadzieję, że ta praca dla wszystkich Dziękuję Ramesh Kumar
źródło
Jeśli powyższe nie działa, znajdź nazwę użytkownika pid i wyłącz ją w Security - Logins
źródło
Nie można tego zrobić, ponieważ baza danych jest w trybie pojedynczym. Przede wszystkim w porządku, ale powinieneś wiedzieć, że: kiedy otworzysz studio zarządzania SQL, nie zna on żadnego użytkownika w bazie danych, ale po kliknięciu bazy danych uznajesz, że jest to pojedynczy użytkownik i twoje polecenie nie działa. Po prostu zrób to: Zamknij studio zarządzania i otwórz je ponownie. nowe okno zapytania bez wybierania bazy danych napisz skrypt poleceń.
zrób f5 wolla wszystko ok!
źródło
Z łatwością rozwiązałem problem
Kliknij nazwę bazy danych prawym przyciskiem myszy i zmień nazwę
Po zmianie kliknij prawym przyciskiem myszy nazwę bazy danych -> właściwości -> opcje -> przejdź do dolnej części przewijania RestrictAccess (SINGLE_USER na MULTI_USER)
Teraz ponownie możesz zmienić nazwę bazy danych na swoją starą nazwę.
źródło
Przy więcej niż 3 okazjach do pracy z SQL Server 2014 miałem bazę danych przekonwertowaną do trybu pojedynczego użytkownika bez mojej zmiany. Musiało to mieć miejsce podczas tworzenia bazy danych. Wszystkie powyższe metody nigdy nie działały, ponieważ zawsze pojawiał się błąd, że baza danych była w trybie pojedynczego użytkownika i nie można się z nią połączyć.
Jedyną rzeczą, którą mogłem pracować, było ponowne uruchomienie usługi Windows Server SQL. To pozwoliło mi połączyć się z bazą danych i wprowadzić niezbędne zmiany lub usunąć bazę danych i zacząć od nowa.
źródło
wystarczy przejść do właściwości bazy danych i zmienić tryb SINGLE USER na MULTI USER
UWAGA: jeśli to nie działa, wykonaj kopię zapasową Db i przywróć ponownie, a następnie ponownie wykonaj powyższą metodę
* Single = SINGLE_USER
Wiele = MULTI_USER
Ograniczone = RESTRICTED_USER
źródło
Po przejściu do trybu pojedynczego użytkownika klient może ustanowić tylko JEDNE połączenie z SQL Server, pamiętaj, że „Object Explorer” podejmuje (osobne) połączenie, więc jeśli próbujesz uruchomić instrukcję dla wielu użytkowników w zapytaniu w oknie pojawi się błąd, że w trybie pojedynczego użytkownika nie można nawiązać innego połączenia.
Dla mnie to nie był problem, w moim przypadku było kilka zautomatyzowanych procesów, które uporczywie (co kilka sekund) nawiązywały połączenia, więc gdy tylko przełączyłem DB w tryb jednego użytkownika i rozłączyłem się, jeden z procesy nawiązały / zajęły połączenie (zanim mogłem rozpocząć operację przywracania). Jak tylko zabiję te połączenia - ponownie się połączą, a kiedy uruchomię polecenie Przywróć, dostanę błąd, że połączenie jest już zajęte.
Aby rozwiązać ten problem, musiałem napisać
kill
oświadczenia, zmienićUser-Mode
oświadczenia iRestore
operacje w jednym oknie zapytania, a kiedy uruchomiłem je wszystkie za jednym razem, voila !!! zadziałało.Mam nadzieję, że to pomaga innym.
źródło
Miałem problem z lokalną bazą danych.
Byłem w stanie rozwiązać ten problem, zatrzymując serwer SQL, a następnie uruchamiając serwer SQL, a następnie używając interfejsu SSMS do zmiany właściwości DB na Multi_User.
Baza danych przeszła w tryb „Pojedynczego użytkownika”, gdy próbowałem przywrócić kopię zapasową. Nie utworzyłem kopii zapasowej docelowej bazy danych przed próbą przywrócenia (SQL 2017). dostaniesz to za każdym razem.
Zatrzymaj SQL Server, uruchom SQL Server, a następnie uruchom powyższe skrypty lub użyj interfejsu użytkownika.
źródło
Przez jakiś czas szukałem rozwiązania i wreszcie wymyśliłem poniższe rozwiązanie,
SSMS ogólnie używa kilku połączeń z bazą danych za kulisami.
Będziesz musiał zabić te połączenia przed zmianą trybu dostępu. (Zrobiłem to za pomocą EXEC (@kill); w szablonie kodu poniżej.)
Następnie,
Uruchom następujący kod SQL, aby ustawić bazę danych w trybie MULTI_USER.
Aby wrócić do trybu pojedynczego użytkownika, możesz użyć:
To powinno działać. Miłego kodowania !!
Dzięki!!
źródło