SQL Server w logistyce

Tabela _task w bazie danych SQL Server

Zadania przekazywane usłudze wykonawczej — z treścią, odbiorcami, załącznikami i statusem realizacji.

sql.server.net.pl/sql/
Uśmiechnięty analityk w garniturze przy szerokim monitorze
Uśmiechnięty analityk w garniturze przy szerokim monitorze
W skrócie
  • Zadanie jest zleceniem dla usługi działającej w tle — najczęściej przygotowania i wysłania wiadomości z załącznikiem.
  • Kolumna ZALACZNIKI przechowuje lokalizację plików, nie ich zawartość, co utrzymuje tabelę w rozsądnym rozmiarze.
  • Powiązanie z klientem i zgłoszeniem odbywa się przez kolumny NRIDODN oraz NRIDCRM.
  • Kolumna STATUS mieści opis przebiegu realizacji — pierwsze miejsce do sprawdzenia, gdy zadanie nie doszło do skutku.

Do czego służy tabela [dbo].[_task]

Część czynności nie może zostać wykonana w chwili, gdy użytkownik klika przycisk: przygotowanie raportu z załącznikiem, wysyłka do kilkuset odbiorców, operacja wymagająca dostępu do zasobów sieciowych. Tabela [dbo].[_task] jest kolejką takich zleceń, odbieraną przez usługę wykonawczą działającą w tle.

Struktura przypomina kolejkę wiadomości, ale zakres jest szerszy. Poza tematem, treścią i adresatami wiersz zawiera wskazanie załączników, powiązanie z klientem oraz ze zgłoszeniem w module obsługi klienta. Kolumna REFNO_SEND wiąże zadanie z konkretną wysyłką, dzięki czemu da się prześledzić drogę od zlecenia do nadanej wiadomości.

Kolumna ZALACZNIKI przechowuje lokalizację plików, a nie ich zawartość — decyzja projektowa o wyraźnych konsekwencjach. Tabela pozostaje niewielka nawet przy zadaniach obejmujących duże raporty, ale poprawność działania zależy od dostępności zasobu sieciowego w chwili wykonania. Przeniesienie katalogu albo zmiana uprawnień do niego objawi się niewykonanymi zadaniami, nie błędem bazy.

Od zlecenia do wykonanego zadania
Zlecenie ZlecenieUżytkownik lub zadanie automatyczne tworzy wiersz w kolejce
Przygotowanie PrzygotowanieUsługa buduje treść i kompletuje wskazane załączniki
Wykonanie WykonanieZadanie przechodzi do kolejki wysyłki, powstaje powiązanie
Status StatusPrzebieg realizacji zapisany w kolumnie opisowej

Załączniki są wskazywane ścieżką, nie przechowywane w bazie — dostępność zasobu sieciowego jest więc warunkiem wykonania zadania.

Budowa tabeli — wykaz kolumn

Osiemnaście kolumn opisuje treść zadania, jego adresatów oraz powiązania z klientem i wysyłką.

Wykaz kolumn tabeli
KolumnaTypWymaganaZnaczenie
Treść zadania
TEMATvarchar(200)
tekst do 200 znaków
nieTemat zadania np. temat maila do wysyłki
TRESCvarchar(max)
tekst bez limitu długości
nieTreść zadania np. treść maila do wysyłki
ZALACZNIKIvarchar(max)
tekst bez limitu długości
nieLokalizacja zapisu załącznika wysyłanego w mailu
STATUSvarchar(max)
tekst bez limitu długości
nieStatus realizacji zadania
Adresaci i konto
EMAILvarchar(150)
tekst do 150 znaków
nieAdres email na który my być wysłana wiadomość
DWvarchar(150)
tekst do 150 znaków
nieAdres email do wiadomości
UDWvarchar(150)
tekst do 150 znaków
nieAdres emai UDW
KONTOMAILvarchar(5)
tekst do 5 znaków
nieKonto mailowe ze skorowidza KEML
REPEATint
liczba całkowita
takIlosc powtorzen wysylanego maila
Powiązania i metryka
ID_TASKint
liczba całkowita
takUnikalny identyfikator wiersza tabeli
REFNObigint
liczba całkowita 64-bitowa
takSystemowy numer referencyjny
REFNO_SENDbigint
liczba całkowita 64-bitowa
takNr referencyjny wysyłki
NRIDODNbigint
liczba całkowita 64-bitowa
takNumer ID klienta
NRIDCRMbigint
liczba całkowita 64-bitowa
nieNumer ID z KNCRM
PRXvarchar(5)
tekst do 5 znaków
nieKod pozwalający podzielić zapisywane rekordy na poszczególne źródła
ROLASYSvarchar(3)
tekst do 3 znaków
nieKod roli systemowej
KIEDYdatetime
data i godzina
takData i godzina dopisania rekordu
LOGINvarchar(50)
tekst do 50 znaków
nieNazwa użytkownika generującego zadania

Kolumna STATUS ma typ varchar(max) i mieści opis przebiegu realizacji, a nie kod stanu. Utrudnia to filtrowanie, ale pozwala zapisać treść błędu zwróconego przez usługę — co bywa cenniejsze niż sam status.

Indeksy i wydajność zapytań

Dwa indeksy odpowiadają dwóm zastosowaniom: odnalezieniu pojedynczego zadania i zestawieniu zadań powiązanych z jedną wysyłką.

Indeksy zdefiniowane na tabeli
IndeksKolumnyRodzaj
PK__taskID_TASKklucz główny
REFNO_SEND_PRX_REPEATREFNO_SEND, PRX, REPEATzwykły

Indeks złożony REFNO_SEND_PRX_REPEAT pozwala usłudze pobrać zadania powiązane z daną wysyłką, ograniczone do jednego źródła i liczby prób. Zwraca uwagę brak indeksu na kolumnie KIEDY — przy narastającej kolejce zapytania o zadania z ostatniej doby wymuszają przejrzenie całej tabeli.

Załączniki wskazywane ścieżką — konsekwencje wyboru

Decyzja o przechowywaniu ścieżki zamiast zawartości pliku ma zalety i wady, które ujawniają się w różnych momentach eksploatacji.

Ścieżka do pliku a zawartość w bazie
ZagadnienieŚcieżka (obecne rozwiązanie)Zawartość w bazie
Rozmiar bazyBez wpływuRośnie proporcjonalnie do liczby i wielkości plików
Kopia zapasowaNie obejmuje plików — potrzebna osobnaObejmuje wszystko w jednej operacji
Przeniesienie na inny serwerWymaga zachowania ścieżek albo ich aktualizacjiPliki przenoszą się razem z bazą
Dostęp usługiZależy od uprawnień do zasobu sieciowegoWystarczą uprawnienia do bazy
Odtworzenie archiwalnego zadaniaMożliwe tylko, gdy plik nadal istniejeZawsze możliwe

Trzy ostatnie wiersze opisują sytuacje, w których obecne rozwiązanie wymaga świadomej procedury zamiast polegania na samej bazie.

Praktyczny wniosek: procedura tworzenia kopii zapasowej musi obejmować katalog załączników, a procedura przenoszenia instalacji — sprawdzenie uprawnień usługi do zasobu sieciowego. Oba punkty bywają pomijane, bo baza po migracji działa poprawnie, a niewykonane zadania nie zgłaszają się same.

Jak korzystać z tabeli w praktyce

Przy pracy z kolejką zadań warto trzymać się poniższych zasad:

  • Sprawdzaj kolumnę STATUS jako pierwszą, gdy zadanie nie zostało wykonane — mieści treść błędu zwróconego przez usługę.
  • Kontroluj dostępność ścieżek z kolumny ZALACZNIKI po każdej zmianie serwera plików albo uprawnień.
  • Obejmij katalog załączników procedurą tworzenia kopii zapasowej; baza sama go nie zabezpiecza.
  • Ustaw próg dla kolumny REPEAT, po którym zadanie przestaje być ponawiane i trafia do przeglądu.
  • Rozważ indeks na kolumnie KIEDY, jeżeli kolejka narasta — zapytania o ostatnią dobę wymuszają obecnie odczyt całej tabeli.
  • Archiwizuj zadania wykonane; kolumny TRESC i STATUS mają typ varchar(max) i szybko powiększają tabelę.

Zadania niezrealizowane mimo powtórzonych prób, wraz z początkiem opisu statusu:

SELECT  t.ID_TASK,
        t.KIEDY,
        LEFT(t.TEMAT, 60)  AS TEMAT,
        t.EMAIL,
        t.REPEAT           AS PROB,
        LEFT(t.STATUS, 200) AS STATUS_OPIS
FROM    dbo._task AS t
WHERE   t.REPEAT > 2
  AND   t.KIEDY >= DATEADD(DAY, -14, GETDATE())
ORDER BY t.REPEAT DESC, t.KIEDY DESC;

Jeżeli w kolumnie statusu powtarza się komunikat o braku dostępu do pliku, przyczyną jest zwykle zmiana uprawnień usługi do zasobu sieciowego, a nie sama treść zadania.

Zadania wykonywane w tle działają dobrze do momentu, w którym coś zmieni się poza bazą danych — ścieżka, uprawnienie, konto usługi. Rejestr statusów pozwala to wykryć w kilka minut, ale tylko wtedy, gdy ktoś regularnie do niego zagląda albo ustawi na niego kontrolę.

Powiązane tabele i dokumentacja

Kolejka zadań współpracuje z pozostałymi mechanizmami automatyzacji i powiadamiania:

FAQ

Najczęściej zadawane pytania o tabelę _task

01

Czym zadanie różni się od wpisu w kolejce wiadomości?

Zakresem. Wiersz w tabeli _send to gotowa wiadomość czekająca na nadanie. Zadanie w tabeli _task to zlecenie czynności, która dopiero ma zostać wykonana — przygotowania raportu, skompletowania załączników, a dopiero potem wysyłki. Kolumna REFNO_SEND wiąże jedno z drugim.

02

Dlaczego załączniki nie są przechowywane w bazie?

Bo utrzymuje to tabelę w rozsądnym rozmiarze nawet przy zadaniach obejmujących duże raporty. Ceną jest zależność od zasobu zewnętrznego: procedura kopii zapasowej musi obejmować katalog plików, a przy przenoszeniu instalacji trzeba sprawdzić uprawnienia usługi do niego. Oba punkty bywają pomijane, bo baza po migracji działa poprawnie.

03

Co zrobić, gdy zadanie nie zostało wykonane?

Zacząć od kolumny STATUS, która mieści opis przebiegu realizacji wraz z treścią ewentualnego błędu. Powtarzający się komunikat o braku dostępu do pliku wskazuje na problem z uprawnieniami usługi, a nie z samym zadaniem. Kolumna REPEAT pokazuje, ile prób już podjęto.

04

Czy tabela wymaga dodatkowego indeksu?

Przy narastającej kolejce — tak. Obecnie zdefiniowano klucz główny oraz indeks złożony pod potrzeby usługi wysyłającej, natomiast brakuje indeksu na kolumnie KIEDY. Każde zapytanie o zadania z ostatniej doby wymusza więc odczyt całej tabeli, co przy kilkuset tysiącach wierszy staje się odczuwalne.

Słownik pojęć

Słownik pojęć

Pojęcia związane z zadaniami wykonywanymi w tle przez usługi systemowe.

MMicrosoft SQL Server
Serwer relacyjnej bazy danych, na którym pracują aplikacje SoftwareStudio. Odpowiada za spójność danych, uprawnienia dostępu, kopie zapasowe i wydajność zapytań.
IIndeks bazodanowy
Struktura przyspieszająca wyszukiwanie wierszy w tabeli. Dobrze dobrane indeksy skracają czas zapytań, ale spowalniają zapisy i zajmują miejsce na dysku.
KKopia zapasowa
Zabezpieczona kopia bazy danych pozwalająca odtworzyć stan systemu po awarii. W SQL Server wykonuje się ją w trybie pełnym, różnicowym lub jako kopię dziennika transakcji.
PPowiadomienia SMS i e-mail
Automatyczne komunikaty wysyłane po zajściu zdarzenia w systemie — potwierdzeniu awizacji, zmianie statusu reklamacji czy zbliżającym się terminie przeglądu.
RRaportowanie
Przetwarzanie danych operacyjnych w zestawienia wspierające decyzje. W SQL Server realizowane zapytaniami, widokami i narzędziami analitycznymi.
EEksport do Excela
Przekazanie danych z systemu do arkusza kalkulacyjnego. Wygodne przy analizie doraźnej, ale kopia w arkuszu natychmiast przestaje być aktualna.
WWydajność zapytań
Czas, w jakim baza danych zwraca wynik. Zależy od indeksów, planu wykonania i objętości przetwarzanych danych.
OObieg dokumentów
Zdefiniowana ścieżka, którą dokument przechodzi między stanowiskami wraz z wymaganymi akceptacjami. Ustala kolejność i odpowiedzialność.

Zobacz to w praktyce

Sprawdź, jak systemy SoftwareStudio oparte na MS SQL Server wspierają ten obszar Twojej firmy.