SQL Server w logistyce

Tabela _license w bazie danych SQL Server

Miejsce przechowywania klucza licencyjnego i znacznika ostatniej weryfikacji uprawnień systemu.

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
  • Tabela mieści klucz licencyjny instalacji oraz znacznik ostatniego sprawdzenia uprawnień.
  • Odróżnia ją od tabeli _licencja zakres: tutaj przechowywane są uprawnienia, tam — ich wykorzystanie.
  • Kolumna LAST_CHECK_TIME pokazuje, 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.

Miejsce klucza licencyjnego w cyklu życia instalacji
Wydanie WydanieDostawca generuje klucz dla konkretnej instalacji
Wprowadzenie WprowadzenieKlucz trafia do bazy przy wdrożeniu lub rozszerzeniu licencji
Weryfikacja WeryfikacjaSystem sprawdza uprawnienia i zapisuje czas kontroli
Odtworzenie OdtworzeniePo przywróceniu bazy klucz wymaga ponownego sprawdzenia

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.

Wykaz kolumn tabeli
KolumnaTypWymaganaZnaczenie
IDint
liczba całkowita
takKolejny numer wpisu, klucz główny tabeli
KEY_STRINGvarchar(100)
tekst do 100 znaków
takCiąg znaków klucza licencyjnego wydanego dla tej instalacji
KIEDYdatetime
data i godzina
takData i godzina zapisania wpisu w bazie
LAST_CHECK_TIMEdatetime
data i godzina
takData i godzina ostatniej weryfikacji ważności licencji przez system
MAX_TEXT_1varchar(max)
tekst bez limitu długości
niePole tekstowe bez ograniczenia długości przeznaczone na dane licencyjne w postaci przygotowanej przez dostawcę
MAX_TEXT_2varchar(max)
tekst bez limitu długości
nieDrugie pole tekstowe bez ograniczenia długości przeznaczone na dane licencyjne
REFNObigint
liczba całkowita 64-bitowa
takNumer 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.

Indeksy zdefiniowane na tabeli
IndeksKolumnyRodzaj
PK__licenseIDklucz 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.

Rozdział zakresów obu tabel licencyjnych
Kryterium<code>_license</code><code>_licencja</code>
Co przechowujeKlucz licencyjny i uprawnienia instalacjiZapisy logowań zajmujących stanowiska
Odpowiada na pytanieDo czego instalacja ma prawoIle z tego prawa jest wykorzystywane
Liczba wierszyPojedyncze wpisyRośnie z każdym logowaniem
Kto z niej korzystaSystem przy weryfikacji uprawnieńAdministrator przy rozliczeniu licencji
Ręczna edycjaNiedopuszczalnaMoż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_TIME jako 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:

FAQ

Najczęściej zadawane pytania o tabelę _license

01

Czym _license różni się od _licencja?

Zakresem. _license przechowuje klucz licencyjny i uprawnienia instalacji — to, do czego ma ona prawo. _licencja rejestruje wykorzystanie, czyli poszczególne sesje zajmujące stanowiska. Przy pytaniu o liczbę potrzebnych licencji właściwa jest ta druga, przy komunikacie o nieważnej licencji — pierwsza.

02

Dlaczego po przeniesieniu bazy system zgłasza brak licencji?

Bo weryfikacja uprawnień uwzględnia parametry instalacji, które przy migracji na nowy serwer się zmieniają. Kolumna LAST_CHECK_TIME pokazuje moment ostatniej udanej kontroli i pozwala ustalić, czy problem pojawił się wraz z przeniesieniem. Rozwiązaniem jest ponowna weryfikacja przeprowadzona zgodnie z procedurą dostawcy.

03

Czy można zmienić zawartość tabeli, żeby rozszerzyć uprawnienia?

Nie. Klucz jest wydawany przez dostawcę i zawiera dane pozwalające sprawdzić jego autentyczność. Ręczna edycja nie rozszerza uprawnień — prowadzi do stanu, w którym system nie potrafi zweryfikować licencji i odmawia uruchomienia. Rozszerzenie zakresu wymaga wydania nowego klucza.

04

Czy tabela musi być uwzględniona w kopii zapasowej?

Tak. Odtworzenie bazy bez danych licencyjnych uniemożliwi uruchomienie systemu, nawet jeśli wszystkie dane operacyjne będą kompletne. Standardowa kopia całej bazy obejmuje tę tabelę automatycznie — problem dotyczy wyłącznie kopii wybiórczych, obejmujących same tabele operacyjne.

Słownik pojęć

Słownik pojęć

Pojęcia związane z licencjonowaniem i przenoszeniem instalacji.

MModel licencjonowania
Zasady odpłatności za oprogramowanie: licencja wieczysta z opłatą wdrożeniową albo abonament obejmujący aktualizacje i wsparcie.
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.
MMigracja danych
Przeniesienie kartotek i historii ze starego systemu do nowego. Etap, na którym najczęściej ujawnia się rzeczywista jakość danych w firmie.
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ń.
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.
IInstalacja lokalna
Wdrożenie na serwerze należącym do klienta, w jego sieci. Daje pełną kontrolę nad danymi, ale przenosi na firmę odpowiedzialność za kopie zapasowe i dostępność.
WWdrożenie
Proces uruchomienia systemu w firmie: analiza procesów, konfiguracja, migracja danych, szkolenia i uruchomienie produkcyjne.

Zobacz to w praktyce

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