Chcemy wycofać wystąpienie programu SQL Server, w którym nadal znajduje się kilka baz danych.
Jak mogę sprawdzić, czy nadal są używane przez użytkowników, czy aplikację internetową?
Znalazłem wątek forum, który miał zapytanie T-SQL, które można uruchomić, aby pobrać datę ostatniego zapytania. Wygląda na to, że działa, ale chcę wiedzieć, czy te informacje są wystarczająco ważne, aby usunąć bazy danych. Czy to jest
Jeśli masz alternatywne metody, które również by pomogły.
sql-server
t-sql
jsauni
źródło
źródło
Odpowiedzi:
Będziesz musiał przejmować się elementami, które zostały usunięte z pamięci podręcznej i których nie zauważyłeś, lub bazami danych, które nie są często używane.
Zamiast upuszczać bazy danych z ręki, ustaw je w trybie offline, aby uniemożliwić dostęp bez ich upuszczania, lub w trybie RESTRICTED_USER, aby ograniczyć dostęp. W ten sposób możesz pozostawić je w tym stanie na miesiąc lub dwa, aby sprawdzić, czy zdarza się to sporadycznie.
Możesz także skorzystać z filtrowania śledzenia profilera po stronie serwera w tej bazie danych.
źródło
Oto metody, z których korzystałem w przeszłości:
Problem polega na tym: jak długo czekasz, zanim masz pewność, że nikt nie uzyska dostępu do danych? W przypadku danych finansowych niektóre elementy są uruchamiane codziennie, co tydzień, co miesiąc, co kwartał, co pół roku i co rok. Ale czy rok wystarczy? Widziałem również prośby o udostępnienie danych przez co najmniej 7 lat, aw jednym przypadku powiedziano mi, że dane w jednym systemie muszą istnieć na zawsze, nawet jeśli nikt ich nie używał.
Najlepsza rada jest następująca: cokolwiek zrobisz, aby wyłączyć dostęp, upewnij się, że możesz go od razu ponownie włączyć. Przekonałem się, że podział działał najlepiej do tego. Po prostu napisałbym scenariusz ponownego dołączenia i poinstruowałbym mój zespół „jeśli ktokolwiek zapyta, gdzie to jest, uruchom ten skrypt”. To dało nam najlepszą szansę na jak najszybsze przywrócenie rzeczy.
źródło
Zgadzam się z Nicem z jego radą. Jeśli musisz być pewien, musisz przejść do programu Profiler (śledzenie po stronie usługi), ponieważ niektóre zapytania SQL nie będą buforowane lub z jakiegokolwiek powodu pamięć podręczna procedur może zostać wyczyszczona.
Zwykle sprawdzałbym informacje dotyczące statystyk plików wirtualnych, aby sprawdzić, czy na poziomie plików systemu operacyjnego występują jakieś odczyty lub zapisy. Nawet jeśli baza danych NIE jest aktywna, nadal będziesz widział małe odczyty / zapisy, jeśli wykonujesz kopie zapasowe dziennika, pełne kopie itp., Ale da to również wyobrażenie o aktywności odczytu / zapisu w tej bazie danych.
Przed usunięciem jakiejkolwiek bazy danych upewnij się, że masz co najmniej 2 lub 3 czytelne kopie zapasowe (przetestuj je) w osobnych lokalizacjach. Nigdy nie wiadomo, kiedy ich potrzebujesz.
źródło
Poniższe zapytanie pokazuje bazy danych, które nie były używane od ostatniego restartu, bez polegania na planach zapytań przechowywanych w pamięci podręcznej, ponieważ pokazuje IO użytkownika względem indeksów (i stosów). Jest to trochę podobne do korzystania z wirtualnych statystyk plików, ale użyty tutaj DMV wyklucza aktywność IO z kopii zapasowych. Nie ma potrzeby prowadzenia śledzenia profilera, żadnych wyzwalaczy ani inspekcji nie jest wymagane. Oczywiście, jeśli często restartujesz serwer SQL (lub często dołączasz / zamykasz bazy danych), może to nie być dobry sposób :-)
Powiedziawszy to, nadal zgadzam się, że nawet jeśli to zapytanie wydaje się potwierdzać, że DB można usunąć, zdecydowanie wykonaj offline / odłącz lub odmawiaj dostępu użytkownikowi przez pewien czas, a także dokładaj starań, aby zapytać przed faktycznym usunięciem!
źródło
Pracowałem w miejscu, które miało dużą liczbę osieroconych i częściowo osieroconych baz danych. Trudno było stwierdzić, czy naprawdę zostały osierocone, ponieważ wiele zadań miało charakter sezonowy lub roczny - tak, że strona działa tylko przez 3-4 miesiące w roku (na przykład formularze W2 muszą być składane elektronicznie 1/31, więc przetwarzanie strony internetowej trwały one tylko od połowy stycznia do końca kwietnia).
To, co zostało zrobione, było kombinacją:
* zapytaj każdego programistę, czy korzysta z jakiejś bazy danych, czy innej (te e-maile będą wysyłane co miesiąc lub gdy tworzenie kopii zapasowych trwa zbyt długo).
* Przełącz bazę danych w tryb offline i sprawdź, kto narzeka.
* zmień nazwę serwera, aby zobaczyć, kto narzeka.
Ponieważ spiczasty włos tylko szef był gotów zezwolić na „pełną i kompletną” dokumentację, wiki została wyraźnie zabroniona, a redukcje personelu prowadzą do dramatycznego spadku dokumentacji, która spełniała ten standard.
Gdyby to zależało ode mnie, na każdym serwerze istniałaby strona wiki z nazwami kontaktów dla każdej bazy danych (i może krótki opis tego, do czego służy baza danych). Każda baza danych nieudokumentowana na wiki byłaby uczciwą grą do usunięcia.
Mieliśmy jednego dużego klienta finansowego, który wciąż korzystał z SQL Server 2000 jeszcze w 2009 roku, więc musieliśmy utrzymać jedną instancję SQL Server 2000, dopóki klient ten ostatecznie nie przejdzie na SQL Server 2005.
źródło
Kolejne dwie alternatywy to:
Włącz kontrolę w bazach danych.
źródło
Następne rozwiązanie pokazuje tymczasowe całkowite, czyste i brudne strony w MB dla poszczególnych baz danych w twojej instancji (znalezione w Internecie i nieco zmodyfikowane):
lub
lub
źródło