Kategorie zadań to podział zaplanowanych operacji SQL Server Agent według ich przeznaczenia, np. konserwacja czy replikacja.
Rola kategorii w SQL Server Agent
Kategorie zadań w SQL Server Agent służą do porządkowania obiektów automatyzacji zapisanych w bazie systemowej msdb. Najczęściej wykorzystuje się je do grupowania zadań według przeznaczenia, na przykład konserwacji baz danych, wykonywania kopii zapasowych, kontroli miejsca na dysku, obsługi replikacji albo zadań związanych z importem i eksportem danych. Kategoria jest etykietą organizacyjną przypisaną do zadania, a nie osobnym procesem wykonywania instrukcji.
Przypisanie zadania do kategorii nie zmienia jego harmonogramu, kroków, warunków uruchomienia ani sposobu raportowania błędów. SQL Server Agent nadal wykonuje job zgodnie z definicją joba i jego schedule. Kategoria pomaga natomiast szybciej odszukać właściwe zadania w SQL Server Management Studio, uporządkować większy zbiór jobów oraz analizować konfigurację środowiska bez przeglądania każdego zadania osobno.
Klasy i właściwości kategorii
SQL Server przechowuje kategorie w tabeli systemowej dbo.syscategories znajdującej się w bazie msdb. Tabela zawiera między innymi identyfikator kategorii, jej nazwę, klasę oraz typ. Klasa określa, jakiego rodzaju obiekt jest kategoryzowany. SQL Server Agent rozróżnia kategorię zadań, kategorię alertów oraz kategorię operatorów. Wewnętrzne wartości klasy odpowiadają odpowiednio obiektom JOB, ALERT i OPERATOR.
Właściwość category_type rozróżnia kategorie lokalne i wieloserwerowe. Kategoria lokalna odnosi się do zadań wykonywanych w bieżącej instancji. Kategoria wieloserwerowa jest związana z konfiguracją zadań przeznaczonych do obsługi środowiska master server i target server. To rozróżnienie ma znaczenie przede wszystkim w środowiskach korzystających z wieloserwerowej administracji SQL Server Agent; sama nazwa kategorii nie powoduje jeszcze uruchomienia takiego mechanizmu.
Podczas instalacji SQL Server Agent dostępna jest domyślna kategoria lokalnych zadań oznaczana jako Uncategorized (Local). Zadanie może pozostać w tej kategorii, ale w uporządkowanym środowisku zwykle tworzy się nazwy opisujące funkcję joba. Nazwa kategorii powinna być jednoznaczna, ponieważ w bazie msdb nazwy są używane do identyfikacji kategorii w interfejsie administracyjnym oraz w procedurach systemowych.
Tworzenie, przypisywanie i kontrola konfiguracji
Kategorię można utworzyć w SQL Server Management Studio w obszarze SQL Server Agent albo z użyciem procedury systemowej msdb.dbo.sp_add_category. Dla zadań stosuje się klasę JOB, a typ określa, czy kategoria jest lokalna, czy wieloserwerowa. Przykładowa operacja utworzenia kategorii dla lokalnych jobów może wyglądać następująco: EXEC msdb.dbo.sp_add_category @class = N'JOB', @type = N'LOCAL', @name = N'Kopie zapasowe';. Nazwę należy dobrać do rzeczywistego przeznaczenia grupowanych zadań.
Istniejące zadanie można przypisać do kategorii za pomocą procedury msdb.dbo.sp_update_job z parametrem @category_name. Przykład: EXEC msdb.dbo.sp_update_job @job_name = N'BackupDatabase', @category_name = N'Kopie zapasowe';. Operacja zmienia metadane joba, ale nie edytuje jego kroków ani harmonogramów. Jeżeli nazwa kategorii nie istnieje albo nie odpowiada klasie obiektu, polecenie zakończy się błędem i przypisanie nie zostanie wykonane.
Do kontroli konfiguracji można odczytać dane z msdb.dbo.syscategories i połączyć je z tabelą msdb.dbo.sysjobs przez identyfikator kategorii zapisany przy jobie. W praktyce warto sprawdzać, czy zadania o podobnym działaniu mają spójne kategorie, czy nie pozostały przypadkowo w kategorii domyślnej oraz czy nazwy nie sugerują funkcji, której job faktycznie nie wykonuje. Bezpośrednia edycja tabel systemowych nie jest właściwą metodą zarządzania kategoriami; do zmian należy używać interfejsu SQL Server Agent albo udokumentowanych procedur systemowych.
Kategorie jako element przeglądu zadań Agent
Podczas analizy instancji SQL Server kategoria pozwala ocenić strukturę automatyzacji. Jeżeli wiele jobów ma nazwy wskazujące na kopie zapasowe, ale należy do kategorii konserwacyjnej, może to utrudniać filtrowanie i przegląd konfiguracji. Odwrotna sytuacja również jest możliwa: nazwa kategorii może wyglądać poprawnie, lecz kroki joba mogą wykonywać inną operację. Dlatego kategoria jest wskazówką klasyfikacyjną, a nie dowodem rzeczywistego działania zadania.
W czasie diagnostyki problemów z SQL Server Agent należy rozdzielić trzy informacje: kategorię joba, jego harmonogram oraz historię wykonania. Kategoria nie wyjaśnia sama z siebie, dlaczego zadanie się nie uruchomiło, zakończyło błędem albo wykonało tylko część kroków. Do tego potrzebne są ustawienia joba, aktywne harmonogramy, właściciel, uprawnienia, konfiguracja proxy, komunikaty z historii oraz stan usługi SQL Server Agent. Prawidłowo zaprojektowane kategorie przyspieszają jednak wybór właściwego zbioru zadań do dalszej kontroli.
W środowisku biurowym lub na komputerze używanym do pracy z lokalną bazą danych przegląd kategorii może być częścią kontroli konfiguracji oprogramowania. Warto zweryfikować, czy zadania nie zostały wyłączone, czy ich nazwy odpowiadają faktycznym operacjom i czy zmiana kategorii nie została pomylona ze zmianą harmonogramu. Diagnostyka powinna obejmować również integralność bazy msdb, dostępność usługi SQL Server Agent oraz poprawność połączenia z właściwą instancją SQL Server.