| Termin | Definicja |
|---|---|
| Typ kroku zadania | Typ kroku zadania decyduje o środowisku uruchomieniowym wykorzystywanym przez SQL Server Agent. Typ kroku zadania w SQL Server AgentTyp kroku zadania określa, jaki mechanizm zostanie użyty do wykonania pojedynczego etapu zdefiniowanego w zadaniu SQL Server Agent. Zadanie może składać się z jednego kroku albo z kilku następujących po sobie etapów. Każdy krok ma własną nazwę, własne polecenie, ustawienia dotyczące bazy danych lub innego środowiska oraz reguły decydujące o dalszym przebiegu po powodzeniu albo błędzie. Nie należy utożsamiać typu kroku z samą nazwą zadania. Nazwa opisuje cel całego procesu, natomiast typ wskazuje sposób interpretowania zawartości pola polecenia. Dzięki temu jedna definicja zadania może uruchamiać instrukcje T-SQL, wykonywać skrypt systemowy, przekazywać polecenia do usług analitycznych albo korzystać z innych komponentów dostępnych w danej instalacji SQL Server. Wybór właściwego typu wpływa na składnię, wymagane uprawnienia, dostępne opcje oraz sposób rejestrowania wyniku. Przy projektowaniu zadania warto najpierw określić, co ma zostać wykonane, gdzie ma zostać wykonane i jaki rezultat będzie uznany za prawidłowy. Dopiero potem dobiera się typ kroku. Takie podejście ogranicza pomyłki, ponieważ podobnie brzmiące polecenia mogą wymagać zupełnie różnych ustawień. Szczególne znaczenie mają konto wykonawcze, kontekst bazy danych, ścieżki do plików, zależności między krokami oraz sposób obsługi kodu zakończenia. Typ kroku zadania a środowisko wykonaniaNajczęściej spotykanym wariantem jest krok wykonywany przez silnik bazy danych, w którym umieszcza się instrukcję T-SQL. Taki krok może służyć między innymi do tworzenia kopii zapasowej, porządkowania danych, aktualizowania tabel pomocniczych, odświeżania obiektów, sprawdzania warunków biznesowych lub zapisywania informacji w tabeli dziennika. W tym przypadku istotne jest wskazanie właściwej bazy danych oraz kontrola, czy polecenie może być wykonywane wielokrotnie bez powodowania niepożądanych skutków. Inną grupę stanowią kroki uruchamiające polecenia systemu operacyjnego. Pozwalają one wykonywać skrypty powłoki, programy narzędziowe lub operacje na plikach. Tego rodzaju rozwiązanie wymaga szczególnej ostrożności. Należy sprawdzić, czy ścieżki są jednoznaczne, czy program jest dostępny dla konta wykonującego zadanie oraz czy dane przekazywane do polecenia nie mogą zostać potraktowane jako niebezpieczne parametry. W środowiskach o ograniczonych uprawnieniach krok może zakończyć się błędem mimo poprawności składni samego polecenia. W zależności od zainstalowanych składników mogą być dostępne także typy przeznaczone dla usług analitycznych, pakietów integracyjnych, replikacji lub innych funkcji współpracujących z SQL Server. Ich obecność i zakres zależą od wersji produktu oraz konfiguracji. Dlatego dokumentację konkretnej instalacji należy traktować jako ważniejsze źródło informacji niż przykłady przygotowane dla innego wydania. Porównując typy kroków, można przyjąć prostą zasadę: T-SQL sprawdza się wtedy, gdy logika pozostaje w obrębie bazy danych, a polecenie systemowe wtedy, gdy konieczna jest współpraca z systemem plików lub zewnętrznym programem. Łączenie obu sposobów w jednym kroku zwykle utrudnia diagnostykę. Czytelniejsza bywa sekwencja kilku kroków, w której każdy ma jasno określoną odpowiedzialność. Problemy z typem kroku zadaniaJednym z typowych problemów jest wybranie niewłaściwego typu podczas tworzenia zadania. Polecenie T-SQL wpisane w krok systemowy nie zostanie wykonane jako instrukcja bazy danych, a komenda powłoki umieszczona w kroku przeznaczonym dla silnika również nie otrzyma właściwego interpretera. Objawem może być komunikat o błędzie składni, brak oczekiwanego pliku albo zakończenie etapu kodem, który nie wyjaśnia rzeczywistej przyczyny. Drugim częstym źródłem trudności są uprawnienia. Zadanie uruchamiane ręcznie przez administratora może działać poprawnie, lecz wywołanie zgodne z harmonogramem odbywa się z użyciem innego konta lub innego kontekstu bezpieczeństwa. W rezultacie nie jest widoczna baza, katalog, udział sieciowy albo program, który podczas testu był dostępny. Weryfikacja powinna obejmować konto wykonawcze, członkostwo w odpowiednich rolach, uprawnienia do obiektów oraz dostęp do zasobów zewnętrznych. Problemy mogą wynikać również z ustawień przejścia do następnego kroku. Dla każdego etapu można określić reakcję na sukces, niepowodzenie, pominięcie albo zakończenie. Jeśli błędnie przyjęto, że dowolny komunikat ostrzegawczy oznacza sukces, całe zadanie może kontynuować pracę pomimo niepełnego rezultatu. Z kolei zbyt rygorystyczna obsługa błędów może zatrzymywać proces w sytuacjach, które powinny zostać jedynie zapisane w dzienniku. Ważnym elementem jest historia wykonania. Należy analizować nie tylko ogólny status zadania, lecz także wynik każdego kroku, czas rozpoczęcia, czas zakończenia, komunikat oraz kolejność zdarzeń. Przy zadaniach wieloetapowych pomocne jest nadanie krokom nazw wskazujących działanie, na przykład „sprawdzenie warunków”, „przetworzenie danych” i „zapis wyniku”. Ułatwia to odróżnienie błędu konfiguracji od błędu samego polecenia. Praktyczne wskazówki dla typu kroku zadaniaPrzed zapisaniem konfiguracji warto wykonać próbę na niewielkim, kontrolowanym zbiorze danych albo w odseparowanym środowisku testowym. Sprawdza się wtedy nie tylko poprawność polecenia, lecz także zachowanie w przypadku braku danych, częściowego wykonania, ponownego uruchomienia i przerwania procesu. Jeżeli krok modyfikuje dane, powinno się ustalić, czy ponowne wykonanie jest bezpieczne oraz czy potrzebne jest oznaczanie już przetworzonych rekordów. Każdy krok powinien mieć jasno opisany cel. W polu opisu można zapisać oczekiwany rezultat, wymagane zależności oraz sposób interpretacji kodu zakończenia. Warto także ograniczać polecenia do zakresu koniecznego dla danego etapu. Mniejszy i jednoznaczny krok łatwiej przetestować, monitorować oraz odtworzyć po awarii. Przy pracy z T-SQL należy kontrolować kontekst bazy, transakcje, blokady i czas wykonania. Długie operacje powinny mieć uzasadniony harmonogram, a w razie potrzeby także mechanizm rejestrowania postępu. Przy poleceniach systemowych należy unikać zależności od bieżącego katalogu, skrótów ścieżek i ustawień profilu użytkownika. Ścieżki powinny być jawne, a wymagane zmienne przekazywane w sposób przewidywalny. Nie powinno się ukrywać błędów przez bezwarunkowe wymuszanie pomyślnego zakończenia kroku. Jeżeli wystąpi problem, lepiej zapisać go w historii, przerwać proces zgodnie z przyjętą polityką i umożliwić późniejszą analizę. Przydatne jest również ustawienie powiadomień dla zadań o znaczeniu operacyjnym, szczególnie gdy ich wynik wpływa na kolejne procesy. Po zmianie typu kroku trzeba ponownie sprawdzić uprawnienia i zależności. Zmiana interpretera może zmienić sposób obsługi parametrów, kodów wyjścia, komunikatów i ścieżek. Dokumentacja konfiguracji powinna zawierać nazwę typu, cel kroku, właściciela zadania, przewidywany rezultat oraz warunki, po których można uznać wykonanie za poprawne. Kiedy sprawdzić typ kroku zadania w serwisie komputerowymWeryfikacja jest wskazana, gdy zadanie przestało działać po zmianie hasła, aktualizacji systemu, przeniesieniu bazy, zmianie konta wykonawczego albo modyfikacji harmonogramu. Pomoc może być potrzebna także wtedy, gdy uruchomienie ręczne kończy się powodzeniem, lecz wykonanie automatyczne nie przynosi oczekiwanego rezultatu. Do analizy przydają się komunikaty z historii zadania, nazwa użytego typu, treść polecenia, czas wystąpienia problemu oraz informacja o ostatnich zmianach konfiguracyjnych. W przypadku komputera używanego do pracy z bazami danych można skorzystać z pomocy firmy Warszawskie Pogotowie Komputerowe 24/7, której numer kontaktowy to +48 22 100 48 29. Przed zgłoszeniem warto przygotować opis objawu i kopię komunikatu błędu, bez ujawniania haseł ani danych dostępowych. Tak zebrane informacje ułatwiają rozróżnienie problemu z typem kroku, uprawnieniami, harmonogramem, połączeniem z bazą lub działaniem samego systemu. Nie każda awaria wynika z błędnej definicji zadania. Przyczyną może być brak miejsca, niedostępna usługa, uszkodzona konfiguracja, konflikt po aktualizacji albo niespójność danych. Dlatego diagnoza powinna obejmować cały łańcuch wykonania, od uruchomienia harmonogramu, przez konto i środowisko, aż po rezultat zapisany w historii. Dopiero na tej podstawie można bezpiecznie zmienić typ kroku lub pozostałe ustawienia. |