Microsoft SQL Server 2008

Dystrybucja zadań usługi SQL Agent do zdalnych instancji Udostępnij na: Facebook

Opublikowano: 3 marca 2010
Autor: Krzysztof Stachyra

Definicje  Definicje
Bezpieczeństwo  Bezpieczeństwo
Opis mechanizmu dystrybucji zadań  Opis mechanizmu dystrybucji zadań
Dodawanie zadań do agenta  Dodawanie zadań do agenta
Podsumowanie  Podsumowanie

 

SQL Server Agent może działać w trybie indywidualnej niezależnej usługi lub być związana z inną usługą, która będzie dla niej źródłem zadań. W artykule zaprezentowany zostanie mechanizm przesyłania zadań do zdalnych usług SQL Agent.

SQL Agent to usługa, która odpowiada za automatyczne wykonywanie zadań w serwerze baz danych SQL Server. Jest instalowana w systemie wraz z każdą instancją serwera SQL. Wyjątek od tej reguły stanowi jedynie edycja SQL Express, która nie posiada agenta.

By w tej wersji zastąpić funkcje tej usługi SQL Agent, należy połączyć harmonogram zadań Windows oraz konsole SQLCMD (to zagadnienie jednak w artykule nie zostanie przedstawione). Wraz z instalacją kolejnych usług pojawia się potrzeba automatyzacji coraz większej ilości zadań i tu z pomocą przychodzi mechanizm kopiowania zadań SQL Agenta (ang. Job).

Pobierz
Pobierz artykuł w pliku:

Definicje

Mechanizm kopiowania zadań jest oparty na serwerze typu Master oraz Target.

  • Master – serwer, na którym tworzy się zadania i z którego dystrybuuje je do serwera Target.
  • Target – serwer docelowy, do którego zadania są kopiowane.
  • Zadanie lokalne – zadanie, które zostało stworzone na serwerze Target lub Master, ale jest wykonywane tylko lokalnie na serwerze, na którym zostało utworzone. Niezależne od serwera drugiego typu.
  • Zadanie zdalne – zadanie, które będzie dystrybuowane na kolejne usługi SQL Agent. (Bardzo ważne jest to, że jedno zadanie nie może być zarówno lokalne, jak i zdalne. Aby wykonać takie samo zadanie lokalnie i zdalnie, należy wykonać je dwa razy ręcznie lub utworzone zadanie zeskryptować i zmienić jego definicję.)

 Do początku strony Do początku strony

Bezpieczeństwo

Zanim przejdziemy do omówienia mechanizmu dystrybucji zadań, musimy zastanowić się chwilę nad domyślnym poziomem zabezpieczeń dla usługi SQL Agenta. Konkretnie chodzi o fakt, że SQL Server próbuje szyfrować połączenia między dwiema instancjami.

Odpowiada za to wpis w rejestrze:

\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\<instance_name>\SQL Server Agent\MsxEncryptChannelOptions

Jego domyślna wartość to 2. Odpowiada ona za domyślne szyfrowanie połączenia. Wartość 0 odpowiada wyłączeniu szyfrowania, natomiast wartość 1 oznacza, że szyfrowanie zostało włączone, ale nie jest walidowany certyfikat.

Jeśli ustawiona zostanie wartość 1 lub 2, szyfrowanie SSL musi być włączone po stronie obu serwerów, zarówno Master, jak i Target.

Na potrzeby niniejszego artykuły wartość tego wpisu została ustawiona na 0.

Wpis w rejestrze.

Rysunek 2: Wpis w rejestrze.

Kolejnym aspektem bezpieczeństwa jest konto, na którym działa usługa SQL Agent. Zgodnie z zaleceniami powinno być to dedykowane konto domenowe/lokalne, inne od tego, które jest ustawione dla silnika bazy danych. Jeśli konto dla usługi SQL Agent to konto lokalne, mechanizm Multi Server Administration jest wspierany tylko wtedy, kiedy obie instancje zostały zainstalowane lokalnie. W innym przypadku należy korzystać z konta domenowego.

 Do początku strony Do początku strony

Opis mechanizmu dystrybucji zadań

Przedstawiamy opis poszczególnych opcji tego mechanizmu z instrukcją, jak je poprawnie wykorzystać.

  1. W pierwszej kolejności należy ustawić odpowiedni wpis odnośnie do szyfrowania.

  2. Aby skopiować zadanie na zdalną lokalizację, należy przede wszystkim skonfigurować odpowiednie funkcje, które będą pełnić te usługi. W tym celu trzeba wywołać kreator z menu pod prawym klawiszem myszy o nazwie Multiserver Administration. Dostępne są tam dwie opcje: Make this a Master oraz Make this a Target

    Wywołanie kreatora.

    Rysunek 2: Wywołanie kreatora.

  3. Ekran powitalny należy pominąć, a na kolejnym można zdefiniować sposób powiadamiania operatora, który jako jedyny będzie odbierać powiadomienia z zadań typu Master/Target. Powiadomienia mogą być realizowane za pomocą e-maili, pagera lub komunikatów Net Send realizowanych za pomocą usługi Posłaniec (trzeba pamiętać, że w systemach Windows XP SP2 oraz Windows 2003 SP1 ta usługa domyślnie jest wyłączona).

  4. Na kolejnym ekranie wybieramy serwery, które będą miejscem docelowym dla zadań. Aby dodać nowy serwer, którego nie widać na liście, należy wybrać opcję Add Connection i wskazać odpowiedni serwer, a następnie wybrać opcję Connect.

    Dodawanie nowego serwera Target.

    Rysunek 3: Dodawanie nowego serwera Target.

  5. Po wybraniu opcji Next zostanie sprawdzona kompatybilność wersji serwera SQL, a następnie w kolejnym ekranie kreatora pojawi się polecenie utworzenia nowego loginu, który będzie odpowiadał za połączenia do serwera Master w celu pobrania listy zadań.

  6. Kiedy zakończymy działanie kreatora opcją Finish, wyświetlony zostanie raport podsumowujący działanie kreatora.

    Raport z podsumowaniem.

    Rysunek 4: Raport z podsumowaniem.

    Jeśli instancje są zainstalowane lokalnie, komunikat o błędzie, który przedstawiony został na rysunku, dotyczący braku możliwości wylistowania serwerów, należy zignorować, ponieważ listowanie odbywa się poprawnie. W przypadku kiedy instancje nie są lokalne, należy zastosować się do wskazówek z komunikatu.

  7. Po poprawnej konfiguracji na liście instancji w Management Studio serwery powinny zawierać odpowiednie oznaczenia, pokazane na poniższym rysunku.

    Oznaczenia instancji SQL Agent.

    Rysunek 5: Oznaczenia instancji SQL Agent.

 Do początku strony Do początku strony

Dodawanie zadań do agenta

Jak widać w instrukcji, konfiguracja mechanizmu nie jest skomplikowana, a za chwilę będziemy mogli się przekonać, że utworzenie zadania, które ma być skopiowane na zdalny serwer, jest równie proste.

  1. Aby dodać nowe zadanie, należy na serwerze Master wybrać New Job z menu prawego przycisku myszy.

  2. Nazwę zadania można wpisać dowolną (powinna opisywać czynności, które są wykonywane w ramach zadania).

  3. Na karcie Steps trzeba określić kroki zadania (jedno zadanie może składać się z wielu kroków, czyli wykonywać wiele czynności, które następują po sobie).

  4. Najważniejszą rzeczą w przypadku zadania zdalnego jest określenie, do jakich serwerów ma ono trafić. Pokazuje to następujący rysunek:

    Serwery docelowe.

    Rysunek 6: Serwery docelowe.

  5. Zapisane zadanie będzie widoczne w sekcji Jobs/Multi-Server Job.

    Lista zadań zdalnych.

    Rysunek 7: Lista zadań zdalnych.

  6. Jak wspomniano wcześniej, aby to samo zadanie wykonywało się lokalnie na instancji, która pełni rolę Master, trzeba wykonać dokładnie takie same kroki jak opisano wcześniej, z zaznaczeniem, że jest to zadanie lokalne.

  7. Domyślnie zadania pobierane są co 60 sekund.

  8. Warto zwrócić uwagę na fakt, że po wykonaniu konfiguracji jednego serwera jako Master opcja dostępna w menu kontekstowym Multi Server Administration zmienia się z Make this a Master na Manage Target Servers.

    Zarządzanie serwerami.

    Rysunek 8: Zarządzanie serwerami.

  9. Na pierwszej karcie poleceniem Force Poll wymusimy pobranie listy zadań (uwaga: serwer Master musi być w grupie serwerów zarejestrowanych) lub odłączenie serwera od serwera Master (należy pamiętać, że jeden serwer może być podpięty tylko do jednego serwera typu Master).

  10. Na drugiej karcie można przeanalizować, jakie zadania były pobierane przez poszczególnych odbiorców. Warto zauważyć również, że na serwerze Master przechowywana jest w historii zadania informacja o jego wykonaniach na serwerze Target, co pozwala w jednym miejscu analizowanie historię wykonań poszczególnych zadań.

Warto zauważyć również, że na serwerze Master przechowywana jest w historii zadania informacja o jego wykonaniach na serwerze Target, co pozwala w jednym miejscu analizowanie historię wykonań poszczególnych zadań.

Historia wykonania zadania.

Rysunek 9: Historia wykonania zadania.

 Do początku strony Do początku strony

Podsumowanie

Jak można się było przekonać, konfiguracja mechanizmu i jego obsługa są bardzo proste i intuicyjne. Trzeba oczywiście pamiętać, że nie każdy typ zadania będzie przeznaczony jednocześnie do wszystkich zdalnych serwerów, ale warto mieć informacje o takich zadaniach w jednym miejscu, co skraca czas na zarządzanie nimi oraz analizę ich pracy.


Krzysztof Stachyra Krzysztof Stachyra (MCT, MCSA, MCITP:DBA, MCTS, MCP)
Autoryzowany trener w firmie Compendium Centrum Edukacyjne Sp. z o.o. Ma doświadczenie w zakresie wdrażania i administracji SQL Server oraz MySQL.
Aktywny uczestnik i prelegent spotkań PLSSUG (Warszawa) i aktywny użytkownik portalu WSS.pl. Pracę dydaktyczną przeplata z projektami wdrożeniowymi i bieżącą administracją. Absolwent Wydziału Informatyki w Wyższej Szkole Technologii Informatycznych.
 Do początku strony Do początku strony

Microsoft SQL Server 2008