Dlaczego miałbym przełączyć bazę danych w tryb offline?

15

Z jakich powodów i w jakich sytuacjach skorzystasz z funkcji „Przełącz offline” / ALTER DATABASE dbName SET OFFLINE.

Jakie zadania możesz wykonać przy bazie danych offline? Jakie zadania możesz wykonywać tylko z bazą danych offline?

Greg B.
źródło

Odpowiedzi:

16

Możesz przenieść plik MDF na inny serwer, aby przełączyć go do trybu online.

mfinni
źródło
4
+1 lub inny dysk / folder / SAN ...
Chris S
Czy to jedyne zastosowanie dla „przejścia offline”?
Greg B,
5
Nie, mogę wymyślić inne powody. Wyobraź sobie, że masz wiele baz danych dla wielu aplikacji. Jedna z tych aplikacji otrzymuje aktualizację aplikacji front-end (aplikacja internetowa, klient, który wie). Chcesz uniemożliwić dostęp do bazy danych komukolwiek podczas aktualizacji, ale nie chcesz zdejmować całego serwera z powodu innych baz danych. To może być powód, aby przejść do trybu offline. Jestem pewien, że twoja wyobraźnia może wymyślić również inne powody.
mfinni
Nie wyobrażam sobie mojej wyobraźni, stąd pytanie. Nie sądziłem, że możesz zmienić bazę danych w trybie offline, więc nie rozumiem, jak przejście do trybu offline może pomóc w procesie aktualizacji
Greg B
2
Greg B - konkretnie powiedziałem o aktualizacji frontonu, a nie samej DB. W opisanym przeze mnie scenariuszu DB pozostaje bez zmian. Zostanie wyłączony, aby upewnić się, że nikt nie ma do niego dostępu podczas przejścia.
mfinni
18

W środowiskach programistycznych / przejściowych czasem przydatne jest przełączenie bazy danych w tryb offline, aby upewnić się, że łączysz się z właściwą instancją bazy danych w aplikacji i że nie masz gdzieś podciągniętego ciągu połączenia.

To powiedziawszy, w tej sytuacji znacznie lepiej jest mieć różne nazwy baz danych dla różnych środowisk i proces kompilacji, który automatycznie skonfiguruje parametry połączenia ...

Podobnie lubię przełączać bazy danych w tryb offline na pewien czas przed wycofaniem ich z eksploatacji (nie tak bardzo), że z jakiegoś powodu muszą wrócić do trybu online. Dość razy zostałem ugryziony przez deweloperów, którzy mają haki, których nie znam w jednej z moich baz danych, kiedy chcę się ich pozbyć. Przełączanie go w tryb offline jest znacznie mniej drastyczne i zajmuje mniej czasu niż usuwanie go i przywracanie w razie potrzeby.

Inną rzeczą byłoby zabezpieczenie awaryjne. Musiałem to zrobić wcześniej. Czasami w Twojej aplikacji znajduje się paskudny błąd, który, choć nie jest złośliwy, nadal powoduje uszkodzenie danych w bazie danych. Przełączenie bazy danych w tryb offline to szybki sposób na zatrzymanie krwawienia do momentu zidentyfikowania błędu. Następnie możesz przywrócić go do trybu online, aby ocenić szkody w bazie danych.

squillman
źródło
2
Podoba mi się pomysł przejścia w tryb offline przed usunięciem
Greg B,
8
Tak samo. Mam cztery tysiące tysięcy baz danych w naszych środowiskach przedprodukcyjnych. Czasami trudno jest wiedzieć, kto jest właścicielem. Odłączenie go w trybie offline i czekanie na pisk jest czasami jedyną opcją.
Michael Green,
6

Chociaż niektóre odpowiedzi tutaj mogą dać ci pomysły na to, co możesz zrobić z bazą danych, która ma ograniczony dostęp, niewiele można zrobić z bazą danych, która jest offline. Nie możesz aktualizować, aktualizować, dodawać ani usuwać danych itp.

joeqwerty
źródło
2
Poprawny. Jeśli chcesz dużo zrobić z bazą danych, lepiej jest ustawić ją w trybie pojedynczego użytkownika. Następnie nadal ograniczasz dostęp, ale możesz zrobić znacznie więcej.
Sean Howat,
Nie możesz nawet zmienić jego nazwy!
Dima Fomin
0

Mój nadrzędny powód, który muszę sprzedać DBA częściej niż chciałbym wymienić ...

„Sieć SAN wymaga naprawy ... i nie, nie mogę po prostu wymienić dysku na gorącą, płyta montażowa / kontrolery są winne”.

Instancje DB zachowują się bardzo źle, gdy ich dyski znikają.

Dlatego zamykam instancje SQL przed przełączeniem SAN w tryb offline, a następnie przywracam je pojedynczo, aby nie zakwestionowały zasobów - pierwsza instancja zabiera wszystkie zasoby klastra i staje się węzłem Active DB, kolejne instancje jako węzły pasywne.

George Erhard
źródło
-3

Jest wiele powodów, dla których musisz to zrobić ...

Dla przykładu,

consider changing or upgrading the actual database program/binary...
consider changing or upgrading the schema or tables..
consider changing or upgrading index's..

Najważniejszy punkt ..

Is taking a backup.. to get a perfect snapshot in time.. 

(w niektórych DB po prostu tworzysz blokadę na wszystkich stołach)

Arenstar
źródło
+1, także starsze DBMS do defragmentacji lub zmniejszenia DB.
Chris S
1
re: „zmiana lub aktualizacja schematu”, z książek online „OFFLINE Baza danych jest zamknięta, czysto zamknięta i oznaczona offline. Bazy danych nie można modyfikować, gdy jest offline”. Jak możesz zaktualizować schemat w tej sytuacji?
Greg B,
Przepraszam .. miałem na myśli wprowadzanie zmian w nieaktywnej bazie danych .. Jestem obserwatorem MySQL, założyłem, że aktualizacja nastąpi w bazie danych oznaczonej w trybie offline, więc nie ma żadnych problemów z współbieżnością z niczym innym niż potrzebną zmianą. Być może możemy to pominąć ...: D
Arenstar
2
Wiesz, prawdziwe bazy danych obsługują prawdziwe kopie zapasowe. Nie musisz brać nic, tylko zabawkę online, aby wykonać idealnie spójną kopię zapasową w czasie. DB wymagający blokady lub innego głupiego mechanizmu to zabawka. Naprawdę. Wszystkie główne bazy danych nie mają problemu z pełnymi kopiami zapasowymi, spójnymi, gdy są intensywnie używane.
TomTom,