Chcę zmienić nazwę bazy danych, ale wciąż pojawia się błąd, że „nie można uzyskać wyłącznej blokady” w bazie danych, co oznacza, że niektóre połączenia są nadal aktywne.
Jak mogę zabić wszystkie połączenia z bazą danych, aby móc zmienić jej nazwę?
Skrypt, aby to zrobić, zamień „DB_NAME” na bazę danych, aby zabić wszystkie połączenia z:
źródło
and spid <> @@SPID
doSELECT @sKillConnection
instrukcji, aby nie próbowała zabić mojego obecnego połączenia, co spowodowałoby wygenerowanie komunikatu o błędzie.Zabij go i zabij ogniem:
źródło
Za pomocą SQL Management Studio Express:
W drzewie Eksploratora obiektów przejdź do sekcji Zarządzanie do „Monitor aktywności” (jeśli nie możesz go tam znaleźć, kliknij prawym przyciskiem myszy serwer bazy danych i wybierz „Monitor aktywności”). Otwierając Monitor aktywności, możesz wyświetlić wszystkie informacje o procesie. Powinieneś być w stanie znaleźć blokady dla bazy danych, którą jesteś zainteresowany, i zabić te blokady, które również zabiją połączenie.
Po tym powinieneś być w stanie zmienić nazwę.
źródło
Zawsze używałem:
źródło
źródło
Odłączenie się zajmuje trochę czasu, a czasem mam z tym pewne problemy ...
Najbardziej solidny sposób moim zdaniem:
Odłącz Kliknij prawym przyciskiem myszy DB -> Zadania -> Odłącz ... zaznacz „Zrzuć połączenia” Ok
Ponownie podłącz Kliknij prawym przyciskiem myszy Bazy danych -> Załącz .. Dodaj ... -> wybierz bazę danych i zmień kolumnę Dołącz jako na żądaną nazwę bazy danych. Dobrze
źródło
użyj „głównej” bazy danych i uruchom tę kwerendę, zabije ona wszystkie aktywne połączenia z bazy danych.
źródło
Zwykle napotykam ten błąd, gdy próbuję przywrócić bazę danych. Zwykle po prostu wchodzę na szczyt drzewa w Management Studio i klikam prawym przyciskiem myszy i ponownie uruchamiam serwer bazy danych (ponieważ znajduje się na komputerze programistycznym, może nie być idealny w środowisku produkcyjnym ). To zamyka wszystkie połączenia z bazą danych.
źródło
ALTER DATABASE ... SET SINGLE_USER
polecenia w innych odpowiedziach zwróciły ten sam błąd „nie można uzyskać blokady wyłącznej”).W MS SQL Server Management Studio w eksploratorze obiektów kliknij bazę danych prawym przyciskiem myszy. W menu kontekstowym, które następuje, wybierz „Zadania -> Przełącz offline”
źródło
Innym podejściem „zabić go ogniem” jest ponowne uruchomienie usługi MSSQLSERVER. Lubię robić rzeczy z wiersza poleceń. Wklei to dokładnie do CMD to zrobi: NET STOP MSSQLSERVER i NET START MSSQLSERVER
Lub otwórz „services.msc” i znajdź „SQL Server (MSSQLSERVER)” i kliknij prawym przyciskiem myszy, wybierz „uruchom ponownie”.
To „na pewno na pewno” zabije WSZYSTKIE połączenia z WSZYSTKIMI bazami danych uruchomionymi w tej instancji.
(Podoba mi się to bardziej niż wiele podejść, które zmieniają i przywracają konfigurację na serwerze / bazie danych)
źródło
Oto jak niezawodnie tego rodzaju rzeczy w MS SQL Server Management Studio 2008 (może działać również w przypadku innych wersji):
źródło
Opcja działająca dla mnie w tym scenariuszu jest następująca:
źródło
Spróbuj tego:
źródło
Kliknij prawym przyciskiem myszy nazwę bazy danych, kliknij Właściwość, aby wyświetlić okno właściwości, Otwórz kartę Opcje i zmień właściwość „Ogranicz dostęp” z Wiele użytkowników na Pojedyncze. Po naciśnięciu przycisku OK pojawi się monit o zamknięcie wszystkich otwartych połączeń, wybierz „Tak” i możesz zmienić nazwę bazy danych ....
źródło
Nie działały one dla mnie (SQL2008 Enterprise), nie widziałem też żadnych uruchomionych procesów ani użytkowników podłączonych do bazy danych. Ponowne uruchomienie serwera (kliknij prawym przyciskiem myszy Sql Server w Management Studio i wybierz Uruchom ponownie) pozwoliło mi przywrócić DB.
źródło
Korzystam z programu SQL Server 2008 R2, moja baza danych została już ustawiona dla jednego użytkownika i istniało połączenie, które ograniczało wszelkie działania w bazie danych. Zatem zalecane rozwiązanie SQLMenace zareagowało błędem. Oto taki, który zadziałał w moim przypadku .
źródło
Używam sp_who, aby uzyskać listę wszystkich procesów w bazie danych. Jest to lepsze, ponieważ możesz chcieć sprawdzić, który proces zabić.
Wynik
Możesz użyć polecenia w kolumnie KillCommand, aby zabić żądany proces.
źródło
Możesz użyć polecenia SP_Who i zabić cały proces korzystający z bazy danych, a następnie zmienić nazwę bazy danych.
źródło