Próbuję przeprowadzić konserwację offline (przywracanie bazy danych deweloperów z kopii zapasowej na żywo) w mojej bazie danych deweloperów, ale polecenie „Przejdź do trybu offline” za pośrednictwem programu SQL Server Management Studio działa bardzo wolno - już od 30 minut. Jestem już prawie gotowy i nie mogę znaleźć w Internecie żadnych odniesień do tego, co może powodować problem z szybkością lub jak to naprawić.
Niektóre strony sugerują, że otwarte połączenia z bazą danych powodują to spowolnienie, ale jedyną aplikacją, która korzysta z tej bazy danych jest instancja IIS mojego urządzenia deweloperskiego, a usługa jest zatrzymana - nie ma już żadnych otwartych połączeń.
Co może być przyczyną tego spowolnienia i co mogę zrobić, aby go przyspieszyć?
źródło
Najprawdopodobniej istnieje gdzieś połączenie z bazą danych (rzadki przykład: asynchroniczna aktualizacja statystyki )
Aby znaleźć połączenia, użyj sys.sysprocesses
Aby wymusić rozłączenie, użyj NATYCHMIASTOWEGO ROLLBACK
źródło
ALTER DATABASE failed because a lock could not be placed on database
polecenieKILL <SPID>
pomożeCzy masz jakieś otwarte okna SQL Server Management Studio, które są podłączone do tej bazy danych?
Przełącz go w tryb pojedynczego użytkownika, a następnie spróbuj ponownie.
źródło
W moim przypadku, po tak długim oczekiwaniu na zakończenie, nie miałem cierpliwości i po prostu zamknąłem studio zarządzania. Przed wyjściem pokazał komunikat o powodzeniu, db jest w trybie offline. Pliki były dostępne do zmiany nazwy.
źródło
wykonać procedurę przechowywaną sp_who2
Pozwoli ci to sprawdzić, czy są jakieś blokady blokujące. Zabij ich, powinien to naprawić.
źródło
W SSMS: kliknij prawym przyciskiem myszy ikonę serwera SQL, Monitor aktywności. Otwarte procesy. Znajdź przetworzone połączenie. Kliknij proces prawym przyciskiem myszy, Zabij.
źródło
za każdym razem, gdy napotkasz tego rodzaju rzeczy, zawsze powinieneś pomyśleć o swoim dzienniku transakcji. Wskazuje to na zmianę instrukcji db db z natychmiastowym wycofaniem. Sprawdź to: http://msdn.microsoft.com/en-us/library/ms189085.aspx
Kość na punktach kontrolnych itp. Musisz zdecydować, czy transakcje w twoim dzienniku są warte zapisania, czy nie, a następnie wybrać tryb, aby odpowiednio uruchomić db. Naprawdę nie ma powodu, abyś musiał czekać, ale także nie ma powodu, aby stracić dane - możesz mieć oba.
źródło
Zamknięcie instancji SSMS (SQL Service Manager), z którego wysłano żądanie, rozwiązało problem dla mnie .....
źródło
W moim przypadku przejrzałem niektóre tabele w DB przed wykonaniem tej akcji. Moje konto użytkownika miało aktywne połączenie z tym DB w SSMS. Po rozłączeniu się z serwerem w SSMS (pozostawiając otwarte okno dialogowe „Przełącz bazę danych w tryb offline”) operacja zakończyła się powodzeniem.
źródło
Aby obejść ten problem, zatrzymałem stronę internetową, która była podłączona do bazy danych w IIS i natychmiast panel „zamrożony” „przestaw db offline” został odmrożony.
źródło
Wypróbowałem wszystkie poniższe sugestie i nic nie działało.
Zabij <SPID>
ZMIEŃ ZESTAW BAZY DANYCH POJEDYNCZY_UŻYTKOWNIK Z Natychmiastowym wycofaniem
ZMIEŃ BAZY DANYCH ZESTAW W TRYBIE OFFLINE Z NATYCHMIASTOWYM ROLLBACK
Wynik: oba powyższe polecenia również zostały zablokowane.
4 Kliknij bazę danych prawym przyciskiem myszy -> Właściwości -> Opcje Ustaw bazę danych Tylko do odczytu na wartość True Kliknij „Tak” w oknie dialogowym z ostrzeżeniem SQL Server zamknie wszystkie połączenia z bazą danych.
Wynik: okno utknęło podczas wykonywania.
W ostateczności zrestartowałem usługę serwera SQL z menedżera konfiguracji, a następnie uruchomiłem ZMIENIĆ BAZY DANYCH USTAWIĆ ONLINE Z NATYCHMIASTOWYMI ROLLBACK. Działa jak urok
źródło
Zamknij także wszystkie okna zapytań, które możesz otworzyć, które są podłączone do danej bazy danych;)
źródło
W SSMS ustaw bazę danych jako tylko do odczytu, a następnie z powrotem. Połączenia zostaną zamknięte, co zwolni blokady.
W moim przypadku istniała strona internetowa, która miała otwarte połączenia z bazą danych. Ta metoda była dość łatwa:
Database Read-Only
na Trueźródło
Dla mnie musiałem tylko przejść do Monitora aktywności zadania i zatrzymać dwie rzeczy, które były przetwarzane. Następnie natychmiast przełączyło się w tryb offline. W moim przypadku wiedziałem jednak, czym są te 2 procesy i że można je zatrzymać.
źródło
W moim przypadku baza danych była powiązana ze starą instalacją Sharepoint. Zatrzymanie i wyłączenie powiązanych usług w menedżerze serwerów „cofnęło” działanie w trybie offline, które działało przez 40 minut i zakończyło się natychmiast.
Możesz sprawdzić, czy z usług bazy danych korzystają obecnie jakieś usługi.
źródło
sp_who2
aby zobaczyć, które procesy korzystają z bazy danych i użyj,kill <PID>
aby je zatrzymać.Następnym razem, w oknie dialogowym Przełącz offline, zaznacz pole wyboru „Usuń wszystkie aktywne połączenia”. Byłem też na SQL_EXPRESS na komputerze lokalnym bez połączeń, ale to spowolnienie nastąpiło dla mnie, chyba że zaznaczyłem to pole wyboru.
źródło
W moim przypadku zatrzymałem serwer Tomcat. wtedy natychmiast DB przeszło w tryb offline.
źródło