SQL Server w logistyce

Tabela _licencja w bazie danych SQL Server

Rejestr sesji liczonych do licencji — pokazuje, ilu użytkowników faktycznie korzysta z systemu jednocześnie.

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
  • Wiersz powstaje przy pierwszym logowaniu sesji i odpowiada jednemu zajętemu stanowisku licencyjnemu.
  • Identyfikator sesji w kolumnie SESSIONID odróżnia równoległe połączenia tego samego użytkownika.
  • Adres IP i nazwa hosta pozwalają ustalić, z którego stanowiska nastąpiło logowanie — także przy pracy zdalnej.
  • Tabela odpowiada na praktyczne pytanie przed zakupem rozszerzenia: ile stanowisk jest zajętych w godzinach szczytu.

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

Licencja na oprogramowanie magazynowe jest zwykle liczona stanowiskami pracującymi równocześnie, a nie liczbą założonych kont. Różnica bywa znaczna: firma z sześćdziesięcioma kontami może potrzebować dwudziestu stanowisk, bo magazynierzy pracują na zmiany. Tabela [dbo].[_licencja] pozwala tę różnicę zmierzyć zamiast szacować.

Wiersz jest zakładany przy pierwszym logowaniu danej sesji i zawiera cztery informacje istotne dla rozliczenia: login, identyfikator sesji, adres IP oraz nazwę hosta. Kolumna SESSIONID ma tu znaczenie szczególne — to ona, a nie login, odpowiada zajętemu stanowisku. Jeden użytkownik zalogowany na komputerze i na terminalu mobilnym zajmuje dwa.

Zapis adresu IP i hosta pełni podwójną funkcję. Przy rozliczeniu licencji pozwala oddzielić stanowiska stacjonarne od pracy zdalnej. Przy analizie bezpieczeństwa — zauważyć logowania z adresów spoza sieci firmowej albo o nietypowych porach, co bywa pierwszym sygnałem udostępnienia konta osobie nieuprawnionej.

Od logowania do rozliczenia stanowisk licencyjnych
Logowanie LogowanieUżytkownik rozpoczyna sesję i zajmuje stanowisko
Zapis kontekstu Zapis kontekstuDo wiersza trafia SESSIONID, adres IP i nazwa hosta
Pomiar szczytu Pomiar szczytuLiczba równoległych sesji w najbardziej obciążonej godzinie
Decyzja DecyzjaZmierzone obciążenie zastępuje szacunek przy zakupie licencji

Stanowisko zajmuje sesja, nie konto — użytkownik zalogowany jednocześnie na komputerze i terminalu mobilnym liczy się dwukrotnie.

Budowa tabeli — wykaz kolumn

Osiem kolumn opisuje jedno zdarzenie: rozpoczęcie sesji zajmującej stanowisko licencyjne.

Wykaz kolumn tabeli
KolumnaTypWymaganaZnaczenie
HOSTvarchar(max)
tekst bez limitu długości
nieHost, z którgo nastapiło logowanie użytkownika
ID_LICENCJAint
liczba całkowita
takUnikalny identyfikator wiersza tabeli
IPvarchar(50)
tekst do 50 znaków
nieAdres IP, z którego nastąpiło logowanie użytkownika
KIEDYdatetime
data i godzina
takData i czas pierwszego logowania użytkownika
SESSIONIDvarchar(250)
tekst do 250 znaków
takUnikalny identyfikator wiersza w bazie
STAMPtimestamp
znacznik wersji wiersza
takUnikalny identyfikator wiersza
SYSTEMOWEbit
wartość logiczna 0/1
takOznaczenie czy zapis w bazie ROOT jest systemowy i czy będzie instalowany podczas synchornizacji struktury bazy danych
USERNAMEvarchar(50)
tekst do 50 znaków
takLogin użytkownika

Kolumna KIEDY przechowuje moment pierwszego logowania danej sesji, nie każdego kolejnego odświeżenia strony. Pozwala to policzyć rzeczywistą liczbę rozpoczętych sesji, a nie żądań wysłanych do serwera.

Indeksy i wydajność zapytań

Tabela jest zapisywana częściej niż odczytywana — analiza wykorzystania licencji odbywa się okresowo, a nie w trakcie pracy użytkowników.

Indeksy zdefiniowane na tabeli
IndeksKolumnyRodzaj
PK__licencjaID_LICENCJAklucz główny

Klucz główny na kolumnie ID_LICENCJA wystarcza przy typowym zastosowaniu. Jeżeli analiza wykorzystania jest wykonywana regularnie na dużym zbiorze, warto rozważyć indeks na kolumnie KIEDY — zapytania o szczyt obciążenia zawsze zawężają zakres dat.

Jak zmierzyć rzeczywiste zapotrzebowanie na stanowiska

Pytanie „ile licencji potrzebujemy” pada zwykle przy rozbudowie magazynu albo przy odnowieniu umowy. Odpowiedź oparta na liczbie pracowników niemal zawsze zawyża potrzeby, bo nie uwzględnia zmianowości.

  • Policz sesje, nie konta. Liczba założonych loginów jest górnym ograniczeniem, które w praktyce nigdy nie zostaje wykorzystane naraz.
  • Znajdź godzinę szczytu. Obciążenie w magazynie rozkłada się nierównomiernie — najwyższe przypada zwykle na przyjęcia rano i wysyłki po południu.
  • Sprawdź kilka dni, nie jeden. Poniedziałek i dzień po święcie wyglądają inaczej niż środa; miarodajny jest tydzień pracy.
  • Uwzględnij terminale mobilne. Magazynier z kolektorem i dostępem do komputera zajmuje dwa stanowiska, jeśli obie sesje są aktywne.
  • Zostaw zapas. Osiągnięcie limitu oznacza, że kolejna osoba nie zaloguje się do systemu — a zdarza się to w najgorszym możliwym momencie, czyli w szczycie.

Warto też odróżnić sesje faktycznie pracujące od pozostawionych otwartych. Przeglądarka niezamknięta po zakończeniu zmiany potrafi utrzymywać sesję do czasu jej wygaśnięcia, zawyżając pomiar. Ustawienie rozsądnego czasu bezczynności rozwiązuje ten problem i jednocześnie zwalnia stanowiska dla osób, które faktycznie ich potrzebują.

Jak korzystać z tabeli w praktyce

Przy analizie wykorzystania licencji i kontroli dostępu przydają się poniższe uwagi:

  • Licz rozkład sesji w godzinach, nie sumę dzienną — dla licencji liczy się szczyt, nie łączna liczba logowań.
  • Zestaw wyniki z co najmniej tygodnia pracy; pojedynczy dzień bywa nietypowy.
  • Zwróć uwagę na adresy IP spoza sieci firmowej — przy pracy wyłącznie stacjonarnej to sygnał wymagający wyjaśnienia.
  • Sprawdź logowania poza godzinami pracy magazynu; nie muszą oznaczać nadużycia, ale zasługują na weryfikację.
  • Ustaw rozsądny czas wygaśnięcia sesji bezczynnej — zawyżony pomiar bierze się zwykle z niezamkniętych przeglądarek.
  • Archiwizuj wpisy starsze niż okres potrzebny do analizy; tabela rośnie z każdym logowaniem.

Rozkład liczby równoległych sesji w poszczególnych godzinach ostatniego tygodnia — podstawa doboru liczby stanowisk:

SELECT  CAST(KIEDY AS date)      AS DZIEN,
        DATEPART(HOUR, KIEDY)    AS GODZINA,
        COUNT(DISTINCT SESSIONID) AS SESJI,
        COUNT(DISTINCT USERNAME)  AS UZYTKOWNIKOW
FROM    dbo._licencja
WHERE   KIEDY >= DATEADD(DAY, -7, GETDATE())
GROUP BY CAST(KIEDY AS date), DATEPART(HOUR, KIEDY)
ORDER BY SESJI DESC;

Różnica między kolumnami SESJI i UZYTKOWNIKOW pokazuje, ilu użytkowników pracuje na dwóch urządzeniach jednocześnie — to zwykle magazynierzy z terminalem mobilnym.

Rozliczenie licencji oparte na pomiarze zamiast na szacunku bywa korzystne dla obu stron: firma nie kupuje stanowisk, których nie wykorzysta, a jednocześnie unika sytuacji, w której limit blokuje pracę w szczycie. Dane potrzebne do tej rozmowy są już w bazie.

Powiązane tabele i dokumentacja

Rejestr licencyjny warto czytać razem z pozostałymi zapisami dotyczącymi użytkowników i sesji:

FAQ

Najczęściej zadawane pytania o tabelę _licencja

01

Czy licencja jest liczona kontami czy sesjami?

Sesjami. Stanowisko zajmuje aktywne połączenie, a nie założony login — dlatego kluczową kolumną jest SESSIONID, nie USERNAME. Firma z sześćdziesięcioma kontami pracującymi na trzy zmiany potrzebuje zwykle około dwudziestu stanowisk.

02

Dlaczego jeden użytkownik pojawia się w kilku wierszach naraz?

Bo prowadzi kilka równoległych sesji — na przykład pracuje na komputerze i jednocześnie ma zalogowany terminal mobilny. Każda z nich zajmuje osobne stanowisko licencyjne. To najczęstsza przyczyna rozbieżności między liczbą osób w magazynie a liczbą zajętych stanowisk.

03

Co zawyża pomiar wykorzystania licencji?

Przede wszystkim sesje pozostawione otwarte po zakończeniu pracy. Niezamknięta przeglądarka utrzymuje sesję aż do jej wygaśnięcia, więc stanowisko pozostaje zajęte mimo braku aktywności. Rozsądnie ustawiony czas bezczynności koryguje pomiar i zwalnia stanowiska dla osób faktycznie pracujących.

04

Do czego przydaje się zapis adresu IP?

Do dwóch rzeczy. Przy rozliczeniu licencji pozwala oddzielić stanowiska stacjonarne od pracy zdalnej. Przy kontroli bezpieczeństwa — zauważyć logowania z adresów spoza sieci firmowej lub o nietypowych porach, co bywa pierwszym sygnałem, że konto zostało udostępnione osobie nieuprawnionej.

Słownik pojęć

Słownik pojęć

Pojęcia związane z licencjonowaniem i kontrolą dostępu do systemu.

MModel licencjonowania
Zasady odpłatności za oprogramowanie: licencja wieczysta z opłatą wdrożeniową albo abonament obejmujący aktualizacje i wsparcie.
SSaaS
Software as a Service — model, w którym oprogramowanie działa na serwerach dostawcy, a klient płaci abonament obejmujący infrastrukturę, aktualizacje i wsparcie.
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ń.
RRole i uprawnienia
Mechanizm przypisywania użytkownikom dostępu do funkcji i danych. Zamiast nadawać uprawnienia pojedynczo, przypisuje się je do roli odpowiadającej stanowisku.
ŚŚlad rewizyjny
Nieusuwalny zapis, kto i kiedy zmienił dane w systemie. Podstawa wiarygodności ewidencji podczas audytu i kontroli.
TTerminal Android
Przenośne urządzenie ze skanerem kodów, na którym magazynier wykonuje operacje bezpośrednio przy regale. Zastępuje papierowe listy i wprowadzanie danych po fakcie.
CChmura obliczeniowa
Udostępnianie mocy serwerów i przestrzeni dyskowej przez internet. Zdejmuje z firmy obowiązek utrzymania własnej serwerowni i pozwala skalować zasoby na żądanie.

Zobacz to w praktyce

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