Jak sprawdzić uptime MSSQL?

W środowisku produkcyjnym czasami zachodzi konieczność weryfikacji uptime serwera. Uptime serwera nie jest jednak synonimem dla uptime usługi SQL Server. Z tego powodu najbezpieczniej zawsze sprawdzać nie uptime całej maszyny, ale usługi SQL Server. Jak możemy jednak to sprawdzić?

Na swoim blogu Jeffrey Verheul opisuje bardzo ciekawe zapytania, które podsuwają odpowiedź na tak zadane pytanie. Autor wyodrębnił kilka pomysłów na sprawdzenie daty i godziny startu usługi SQL Server, do których można zaliczyć:

Na podstawie jego posta powstał niniejszy wpis jako podsumowanie sposobów podglądania uptime SQL Servera.
1. Data utworzenia bazy tempdb

Podczas startu SQL Server baza tempdb jest tworzona za każdym razem na nowo. Dlatego data utworzenia podaje przybliżony czas startu SQL Servera.
2. Widok systemowy sysprocesses

Widok ten reprezentuje uruchomione procesy instancji SQL Server. Procesy numerowane są kolejno od 1, a pierwsze 50 zarezerwowanych jest dla systemu i nie może z nich korzystać żaden użytkownik.

3. Dynamiczny widok zarządczy (Dynamic Management View, DMV) sys.dm_os_sys_info

Widok ten zawiera zestaw różnych informacji o komputerze i dostępnych oraz skonsumowanych zasobów przez SQL Server.

4. Dziennik błędów SQL Server (SQL Server error log)

Wykorzystując procedurę składowaną xp_readerrorlog można na dwa sposoby odczytać informację o dacie i godzinie wystartowania SQL Server . W error logu można szukać zarówno na podstawie identyfikatora procesu lub na podstawie komunikatu informacyjnego dotyczącego ID procesu.

Sposób 1

Można posłużyć się bezpośrednio datą i godziną LogDate.

Sposób 2

Należy odczytać datę i godzinę z kolumny Text.

 

5. Server Dashboard

Na deser najprostsza metoda 🙂 Wystarczy kliknąć prawy przycisk myszy PPM na instancji, a następnie wybrać Reports -> Standard Reports -> Server Dashboard.

Et voilà!

 

8 Comments Add yours

  1. Gość napisał(a):

    Metoda pierwsza, czyli utworzenie bazy tempdb daje wartość najmłodszą, czyli baza jest tworzona na samym końcu całego procesu. To są jedynie pojedyncze sekundy różnicy pomiędzy wartościami zwróconymi przez pozostałe metody, ale w takim razie utworzenie bazy tempdb można by uznać za moment (datę i czas) osiągnięcia przez SQL Server stanu gotowości do pracy, a nie samego startu usługi. Bo ta jest uruchamiana np. w moim przypadku dwie sekundy wcześniej, patrząc na wartość podaną przez metodę nr 3.

    1. PitB napisał(a):

      Hej!
      Ja na swoim poziomie pewnie skorzystałbym z metody *Server Dashboard* lub czas utworzenia tempdb… 🙂
      Przy okazji pozdrawiam Piotra oraz chłopaków z Seequality!
      Robicie kawał dobrej roboty (potrzebnej nam, małym żuczkom bazodanowym) 🙂

      1. Gość napisał(a):

        Sprawdziłem, że przy „zimnym” starcie laptopa z SQL Server-em miałem 50 sekund różnicy pomiędzy wartościami podanymi przez metodę z tempdb (opóźnione tworzenie bazy) i sys.dm_os_sys_info. Po „gorącym” restarcie samego SQL Server-a ta różnica spadła do 3 sekund. Te trzy sekundy nie mają chyba żadnego znaczenia dla zwykłego użycia bazy danych, ale można ten przypadek uogólnić: osiągnięcie gotowości do pracy serwera czy aplikacji jest czymś innym niż fizyczne włączenie sprzętu czy pojawienie się na ekranie pierwszych oznak załadowania oprogramowania. W tle mogą trwać procesy tworzenia danych tymczasowych, czy czegokolwiek tworzonego dynamicznie w ramach aktualnie odpalonej instancji. Czy nawet jakieś procesy wewnętrznego testowania. Tak mi się wydaje. To nie jest pewnik, jedynie moje przypuszczenie na podstawie różnych obserwacji.

        1. piotrziuzianski napisał(a):

          Dzięki za ten test. Myślę, że Twoje przypuszczenia są 100% słuszne 🙂 szczerze mówiąc różnica pomiędzy gorącym a zimnym startem SQL Server troszkę mnie zaskoczyła. Chyba będę musiał przeprowadzić taki sam test 😀

          1. Gość napisał(a):

            Podejrzewam że ta różnica będzie uzależniona od sprzętu, wersji systemu operacyjnego i jego kondycji. Sprawdziłem to na SQL Server 2012 SP3 Express, Windows Vista (czyszczona i defragmentowana regularnie), 4 GB RAM, procesor dwurdzeniowy 2,1 GHz. Być może że na Win 10 różnica będzie bardzo mała, ale nie wiadomo, bo wcale nie jestem zachwycony szybkością „dziesiątki”.

      2. piotrziuzianski napisał(a):

        Dzięki za pozdrowienia, zapraszamy do odwiedzin zarówno msbifun.pl jak i seequality.net! 🙂
        Pozdrawiamy i zawsze do usług! 🙂

  2. piotrziuzianski napisał(a):

    Dokładnie tak 🙂 Czasami chcemy poznać przybliżony czas startu SQL Server. Wtedy metoda z tempdb i widok systemowy sys.databases jest naprawdę łatwym sposobem do zapamiętania 🙂

  3. Adrian Chodkowski napisał(a):

    Najbardziej odpowiada mi metoda z odpytaniem sys.dm_os_sys_info – prosta, łatwa i daje pewność, że obliczymy uptime usługi 🙂 Chociaż rozumiem, że niektórym spodoba się najbardziej „geekowe” podejśćie z odpytywaniem dziennika 😀

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *