Dystrybucja zadań usługi SQL Agent do zdalnych instancji Autor: Krzysztof Stachyra SQL Server Agent może działad w trybie indywidualnej niezależnej usługi lub byd związana z inną usługą, która będzie dla niej źródłem zadao. W artykule zaprezentowany zostanie mechanizm przesyłania zadao do zdalnych usług SQL Agent. SQL Agent to usługa, która odpowiada za automatyczne wykonywanie zadao 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ąpid funkcje tej usługi SQL Agent, należy połączyd harmonogram zadao 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 zadao i tu z pomocą przychodzi mechanizm kopiowania zadao SQL Agenta (ang. Job). Definicje Mechanizm kopiowania zadao 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 byd zarówno lokalne, jak i zdalne. Aby wykonad takie samo zadanie lokalnie i zdalnie, należy wykonad je dwa razy ręcznie lub utworzone zadanie zeskryptowad i zmienid jego definicję.) Bezpieczeństwo Zanim przejdziemy do omówienia mechanizmu dystrybucji zadao, musimy zastanowid się chwilę nad domyślnym poziomem zabezpieczeo dla usługi SQL Agenta. Konkretnie chodzi o fakt, że SQL Server próbuje szyfrowad 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 1
Jego domyślna wartośd to 2. Odpowiada ona za domyślne szyfrowanie połączenia. Wartośd 0 odpowiada wyłączeniu szyfrowania, natomiast wartośd 1 oznacza, że szyfrowanie zostało włączone, ale nie jest walidowany certyfikat. Jeśli ustawiona zostanie wartośd 1 lub 2, szyfrowanie SSL musi byd włączone po stronie obu serwerów, zarówno Master, jak i Target. Na potrzeby niniejszego artykuły wartośd tego wpisu została ustawiona na 0. Rysunek 1. Wpis w rejestrze. Kolejnym aspektem bezpieczeostwa jest konto, na którym działa usługa SQL Agent. Zgodnie z zaleceniami powinno byd 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 korzystad z konta domenowego. Opis mechanizmu dystrybucji zadań Przedstawiamy opis poszczególnych opcji tego mechanizmu z instrukcją, jak je poprawnie wykorzystad. I. W pierwszej kolejności należy ustawid odpowiedni wpis odnośnie do szyfrowania. II. Aby skopiowad zadanie na zdalną lokalizację, należy przede wszystkim skonfigurowad odpowiednie funkcje, które będą pełnid te usługi. W tym celu trzeba wywoład 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 Rysunek 2. Wywołanie kreatora. III. Ekran powitalny należy pominąd, a na kolejnym można zdefiniowad sposób powiadamiania operatora, który jako jedyny będzie odbierad powiadomienia z zadao typu Master/Target. Powiadomienia mogą byd realizowane za pomocą e-maili, pagera lub komunikatów Net Send realizowanych za pomocą usługi Posłaniec (trzeba pamiętad, że w systemach Windows XP SP2 oraz Windows 2003 SP1 ta usługa domyślnie jest wyłączona). 2
IV. Na kolejnym ekranie wybieramy serwery, które będą miejscem docelowym dla zadao. Aby dodad nowy serwer, którego nie widad na liście, należy wybrad opcję Add Connection i wskazad odpowiedni serwer, a następnie wybrad opcję Connect. Rysunek 3. Dodawanie nowego serwera Target. V. Po wybraniu opcji Next zostanie sprawdzona kompatybilnośd 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 zadao. VI. Kiedy zakooczymy działanie kreatora opcją Finish, wyświetlony zostanie raport podsumowujący działanie kreatora. 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 zignorowad, ponieważ listowanie odbywa się poprawnie. W przypadku kiedy instancje nie są lokalne, należy zastosowad się do wskazówek z komunikatu. VII. Po poprawnej konfiguracji na liście instancji w Management Studio serwery powinny zawierad odpowiednie oznaczenia, pokazane na poniższym rysunku. 3
Rysunek 5. Oznaczenia instancji SQL Agent. Dodawanie zadań do agenta Jak widad w instrukcji, konfiguracja mechanizmu nie jest skomplikowana, a za chwilę będziemy mogli się przekonad, że utworzenie zadania, które ma byd skopiowane na zdalny serwer, jest równie proste. I. Aby dodad nowe zadanie, należy na serwerze Master wybrad New Job z menu prawego przycisku myszy. II. Nazwę zadania można wpisad dowolną (powinna opisywad czynności, które są wykonywane w ramach zadania). III. Na karcie Steps trzeba określid kroki zadania (jedno zadanie może składad się z wielu kroków, czyli wykonywad wiele czynności, które następują po sobie). IV. Najważniejszą rzeczą w przypadku zadania zdalnego jest określenie, do jakich serwerów ma ono trafid. Pokazuje to następujący rysunek: Rysunek 6. Serwery docelowe. V. Zapisane zadanie będzie widoczne w sekcji Jobs/Multi-Server Job. Rysunek 7. Lista zadao zdalnych. VI. Jak wspomniano wcześniej, aby to samo zadanie wykonywało się lokalnie na instancji, która pełni rolę Master, trzeba wykonad dokładnie takie same kroki jak opisano wcześniej, z zaznaczeniem, że jest to zadanie lokalne. VII. Domyślnie zadania pobierane są co 60 sekund. 4
VIII. Warto zwrócid 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. Rysunek 8. Zarządzanie serwerami. IX. Na pierwszej karcie poleceniem Force Poll wymusimy pobranie listy zadao (uwaga: serwer Master musi byd w grupie serwerów zarejestrowanych) lub odłączenie serwera od serwera Master (należy pamiętad, że jeden serwer może byd podpięty tylko do jednego serwera typu Master). X. Na drugiej karcie można przeanalizowad, jakie zadania były pobierane przez poszczególnych odbiorców. Warto zauważyd 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ę wykonao poszczególnych zadao. Rysunek 9. Historia wykonania zadania. Podsumowanie Jak można się było przekonad, konfiguracja mechanizmu i jego obsługa są bardzo proste i intuicyjne. Trzeba oczywiście pamiętad, że nie każdy typ zadania będzie przeznaczony jednocześnie do wszystkich zdalnych serwerów, ale warto mied informacje o takich zadaniach w jednym miejscu, co skraca czas na zarządzanie nimi oraz analizę ich pracy. 5
Autor 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 spotkao 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. 6