Mój SQL Server 2005 nie przywraca kopii zapasowej z powodu aktywnych połączeń. Jak mogę to wymusić?
sql-server
sql-server-2005
backup
restore
disconnect
Jader Dias
źródło
źródło
Odpowiedzi:
SQL Server Management Studio 2005
Kliknięcie bazy danych prawym przyciskiem myszy i kliknięcie,
Tasks
a następnie kliknięcieDetach Database
powoduje wyświetlenie okna dialogowego z aktywnymi połączeniami.Klikając na hiperłącze pod "Wiadomościami" możesz zabić aktywne połączenia.
Następnie możesz zabić te połączenia bez odłączania bazy danych.
Więcej informacji tutaj .
SQL Server Management Studio 2008
Interfejs zmienił się dla SQL Server Management studio 2008, oto kroki (przez: Tim Leung )
źródło
Chcesz ustawić swoją bazę danych w trybie pojedynczego użytkownika, wykonaj przywracanie, a następnie ustaw ją z powrotem na wielu użytkowników:
Źródła: Pinal Dave ( http://blog.SQLAuthority.com )
Oficjalne odniesienie: https://msdn.microsoft.com/en-us/library/ms345598.aspx
źródło
ROLLBACK IMMEDIATE
czyROLLBACK AFTER 60
. Jedynym sposobem na zapisanie tych danych jest wykonanie kolejnej kopii zapasowej po wycofaniu. Ale przywracasz z innej kopii zapasowej. Więc jaki jest sens czekania? Czy coś mi brakuje?Ten kod działał dla mnie, zabija wszystkie istniejące połączenia z bazą danych. Wszystko, co musisz zrobić, to zmienić wiersz Set @dbname = 'databaseName', aby zawierał nazwę Twojej bazy danych.
po tym udało mi się go przywrócić
źródło
Spróbuj tego:
źródło
Ponowne uruchomienie serwera SQL rozłączy użytkowników. Najłatwiejszy sposób, jaki znalazłem - dobry również, jeśli chcesz przełączyć serwer w tryb offline.
Ale z jakiegoś bardzo dziwnego powodu opcja „Przełącz w tryb offline” nie robi tego niezawodnie i może zawiesić lub zmylić konsolę zarządzania. Ponowne uruchomienie i przejście do trybu offline działa
Czasami jest to opcja - jeśli na przykład zatrzymałeś serwer WWW, który jest źródłem połączeń.
źródło
Napotkałem ten problem podczas automatyzacji procesu przywracania w SQL Server 2008. Moje (udane) podejście było połączeniem dwóch udzielonych odpowiedzi.
Najpierw sprawdzam wszystkie połączenia wspomnianej bazy danych i zabijam je.
Następnie ustawiłem bazę danych w trybie pojedynczego użytkownika
Następnie uruchamiam przywracanie ...
Ponownie zakończ połączenia
I ustaw bazę danych z powrotem na multi_user.
W ten sposób upewniam się, że nie ma żadnych połączeń zatrzymujących bazę danych przed przełączeniem w tryb pojedynczy, ponieważ ten pierwszy zostanie zawieszony, jeśli istnieją.
źródło
Żaden z nich nie działał dla mnie, nie mógł usunąć ani odłączyć obecnych użytkowników. Nie można też było zobaczyć żadnych aktywnych połączeń z bazą danych. Ponowne uruchomienie programu SQL Server (kliknij prawym przyciskiem myszy i wybierz opcję Uruchom ponownie) pozwoliło mi to zrobić.
źródło
Aby dodać do już podanych porad, jeśli masz aplikację internetową działającą za pośrednictwem usług IIS, która korzysta z bazy danych, może być konieczne zatrzymanie (nie ponowne użycie ) puli aplikacji dla aplikacji podczas przywracania, a następnie ponowne uruchomienie. Zatrzymanie puli aplikacji zabija aktywne połączenia HTTP i nie zezwala na więcej, co w przeciwnym razie mogłoby doprowadzić do wyzwolenia procesów, które łączą się z bazą danych, a tym samym blokują ją. Jest to znany problem dotyczący na przykład systemu zarządzania treścią Umbraco podczas przywracania bazy danych
źródło
Żadne z powyższych nie działało dla mnie. Moja baza danych nie pokazała żadnych aktywnych połączeń za pomocą Monitora aktywności lub sp_who. Ostatecznie musiałem:
Nie jest to najbardziej eleganckie rozwiązanie, ale działa i nie wymaga ponownego uruchamiania SQL Server (nie jest to opcja dla mnie, ponieważ serwer DB hostował kilka innych baz danych)
źródło
Wolę to robić,
zmiana bazy danych ustawiona w trybie offline z natychmiastowym wycofaniem
a następnie przywróć bazę danych. po tym,
zmiana bazy danych w trybie online z natychmiastowym wycofaniem
źródło