- Tabela mieści klucz licencyjny instalacji oraz znacznik ostatniego sprawdzenia uprawnień.
- Odróżnia ją od tabeli
_licencjazakres: tutaj przechowywane są uprawnienia, tam — ich wykorzystanie. - Kolumna
LAST_CHECK_TIMEpokazuje, kiedy system ostatnio zweryfikował ważność licencji. - Zawartość nie podlega ręcznej edycji — zmiana klucza odbywa się procedurą przewidzianą przez dostawcę.
Do czego służy tabela [dbo].[_license]
Każda instalacja StudioSystem działa na podstawie klucza określającego zakres uprawnień: liczbę stanowisk, dostępne moduły i okres obowiązywania. Tabela [dbo].[_license] jest miejscem, w którym ten klucz jest przechowywany razem ze znacznikiem ostatniej weryfikacji.
Warto odróżnić ją od podobnie nazwanej tabeli _licencja. Ta druga rejestruje wykorzystanie licencji, czyli poszczególne sesje zajmujące stanowiska. Tabela opisywana tutaj przechowuje uprawnienia — to, do czego instalacja ma prawo. Pierwsza odpowiada na pytanie „ilu ludzi pracuje”, druga na pytanie „ilu może”.
Struktura jest zamknięta i nie przewiduje ręcznej modyfikacji. Klucz jest wydawany przez dostawcę i wprowadzany procedurą przewidzianą przy wdrożeniu albo przy rozszerzeniu licencji. Bezpośrednia edycja zawartości nie rozszerza uprawnień — prowadzi jedynie do stanu, w którym system nie potrafi zweryfikować licencji i odmawia uruchomienia.
Ostatni krok bywa pomijany przy migracji na nowy serwer — stąd częsty komunikat o braku licencji tuż po przeniesieniu instalacji.
Budowa tabeli — wykaz kolumn
Poniższy wykaz opisuje strukturę tabeli. Kolumny tekstowe bez ograniczenia długości mieszczą dane licencyjne w postaci przygotowanej przez dostawcę i nie są przeznaczone do odczytu ani edycji przez administratora.
| Kolumna | Typ | Wymagana | Znaczenie |
|---|---|---|---|
ID | int liczba całkowita | tak | Kolejny numer wpisu, klucz główny tabeli |
KEY_STRING | varchar(100) tekst do 100 znaków | tak | Ciąg znaków klucza licencyjnego wydanego dla tej instalacji |
KIEDY | datetime data i godzina | tak | Data i godzina zapisania wpisu w bazie |
LAST_CHECK_TIME | datetime data i godzina | tak | Data i godzina ostatniej weryfikacji ważności licencji przez system |
MAX_TEXT_1 | varchar(max) tekst bez limitu długości | nie | Pole tekstowe bez ograniczenia długości przeznaczone na dane licencyjne w postaci przygotowanej przez dostawcę |
MAX_TEXT_2 | varchar(max) tekst bez limitu długości | nie | Drugie pole tekstowe bez ograniczenia długości przeznaczone na dane licencyjne |
REFNO | bigint liczba całkowita 64-bitowa | tak | Numer referencyjny wiersza używany w powiązaniach wewnętrznych systemu |
Zawartość kolumn KEY_STRING, MAX_TEXT_1 i MAX_TEXT_2 jest przygotowywana po stronie dostawcy. Ręczna modyfikacja nie rozszerza uprawnień, lecz uniemożliwia weryfikację licencji.
Indeksy i wydajność zapytań
Tabela zawiera pojedyncze wpisy odczytywane przy starcie systemu i przy okresowej weryfikacji, dlatego indeksowanie ogranicza się do klucza głównego.
| Indeks | Kolumny | Rodzaj |
|---|---|---|
PK__license | ID | klucz główny |
Klucz główny na kolumnie ID jest w zupełności wystarczający. Przy tak niewielkiej liczbie wierszy każdy dodatkowy indeks byłby kosztem bez korzyści.
_license czy _licencja — którą tabelę otworzyć
Zbliżone nazwy bywają mylące, a obie tabele odpowiadają na zupełnie różne pytania. Poniższe zestawienie porządkuje ich zakresy.
| Kryterium | <code>_license</code> | <code>_licencja</code> |
|---|---|---|
| Co przechowuje | Klucz licencyjny i uprawnienia instalacji | Zapisy logowań zajmujących stanowiska |
| Odpowiada na pytanie | Do czego instalacja ma prawo | Ile z tego prawa jest wykorzystywane |
| Liczba wierszy | Pojedyncze wpisy | Rośnie z każdym logowaniem |
| Kto z niej korzysta | System przy weryfikacji uprawnień | Administrator przy rozliczeniu licencji |
| Ręczna edycja | Niedopuszczalna | Możliwa przy archiwizacji starych wpisów |
Przy pytaniu o liczbę potrzebnych stanowisk właściwa jest tabela _licencja; przy komunikacie o braku licencji — ta opisywana tutaj.
Najczęstsza sytuacja, w której administrator sięga po tę tabelę, to komunikat o nieważnej licencji po przeniesieniu instalacji na nowy serwer albo po odtworzeniu bazy z kopii zapasowej. Kolumna LAST_CHECK_TIME pokazuje wtedy, kiedy weryfikacja powiodła się po raz ostatni — co pozwala ustalić, czy problem pojawił się wraz z migracją, czy wcześniej.
Jak korzystać z tabeli w praktyce
Postępowanie z danymi licencyjnymi sprowadza się do kilku zasad:
- Nie modyfikuj zawartości tabeli ręcznie — zmiana klucza odbywa się procedurą przewidzianą przez dostawcę.
- Uwzględnij tę tabelę w kopii zapasowej; jej brak przy odtwarzaniu bazy uniemożliwi uruchomienie systemu.
- Sprawdź kolumnę
LAST_CHECK_TIMEjako pierwszą przy komunikacie o nieważnej licencji. - Po przeniesieniu instalacji na nowy serwer zaplanuj ponowną weryfikację licencji przed dopuszczeniem użytkowników.
- Ogranicz dostęp do tabeli do kont administracyjnych — zawiera dane identyfikujące instalację.
- Przy rozszerzeniu liczby stanowisk zgłoś dostawcy zmierzone obciążenie z tabeli
_licencja, a nie liczbę założonych kont.
Sprawdzenie stanu weryfikacji licencji — pierwsze zapytanie przy diagnozie problemów z uruchomieniem:
SELECT ID,
KIEDY AS ZAPISANO,
LAST_CHECK_TIME AS OSTATNIA_WERYFIKACJA,
DATEDIFF(DAY, LAST_CHECK_TIME, GETDATE()) AS DNI_OD_KONTROLI,
LEN(KEY_STRING) AS DLUGOSC_KLUCZA
FROM dbo._license
ORDER BY ID DESC;
Zapytanie celowo nie zwraca treści klucza. Do diagnozy wystarcza informacja, że wpis istnieje i kiedy był ostatnio weryfikowany.
Osobno warto przemyśleć, kto ma dostęp do tej tabeli. Zawiera ona dane identyfikujące instalację, a jednocześnie nie jest potrzebna nikomu poza kontem administracyjnym i samym systemem. Ograniczenie uprawnień do odczytu tej jednej tabeli kosztuje kilka minut, a zdejmuje z listy ryzyk sytuację, w której klucz licencyjny wycieka razem z eksportem danych przekazanym firmie zewnętrznej.
Dane licencyjne należą do tych elementów bazy, o których pamięta się dopiero przy migracji. Uwzględnienie tej tabeli w procedurze przenoszenia instalacji — razem z zaplanowaną ponowną weryfikacją przed dopuszczeniem użytkowników — oszczędza nerwowego telefonu w pierwszym dniu pracy na nowym serwerze.
Powiązane tabele i dokumentacja
Dane licencyjne wiążą się z pozostałymi mechanizmami kontroli dostępu i utrzymania instalacji: