Serwisanci dostępni teraz · czynne całą dobę, także w weekendy i świętaWarszawa i okolice · dojazd bezpłatny
Darmowa diagnoza laptopa
Darmowa diagnoza laptopa
Dojazd do klienta bezpłatnie
Dojazd do klienta bezpłatnie
Laptopy zastępcze bezpłatnie
Laptopy zastępcze bezpłatnie
Odbiór i zwrot sprzętu bezpłatnie
Odbiór i zwrot sprzętu bezpłatnie

SET LANGUAGE

Termin Definicja
SET LANGUAGE

SET LANGUAGE zmienia język komunikatów i formatowania dat dla bieżącej sesji.

Co dokładnie przestawia to polecenie w sesji SQL Servera

SET LANGUAGE działa na poziomie pojedynczego połączenia i zmienia trzy rzeczy naraz. Po pierwsze — język komunikatów systemowych, o ile w instancji zainstalowano zlokalizowany zestaw komunikatów (tabela sys.messages zawiera osobne wiersze dla każdego language_id). Po drugie — nazwy miesięcy i dni tygodnia zwracane przez DATENAME. Po trzecie, i to zaskakuje najczęściej, ustawia niejawnie DATEFORMAT oraz DATEFIRST. Po wykonaniu SET LANGUAGE Polish formatem domyślnym staje się dmy, a pierwszym dniem tygodnia poniedziałek (DATEFIRST 1), podczas gdy dla ustawienia us_english jest to mdy i niedziela (DATEFIRST 7). Listę dostępnych języków pokazuje procedura sp_helplanguage.

Ustawienie domyślne kontra jawna zmiana w kodzie

Jeżeli nikt nie wywoła polecenia, sesja dziedziczy język przypisany do loginu, a ten z kolei domyślnie bierze wartość z konfiguracji instancji (opcja default language w sp_configure). Efekt bywa taki, że ta sama procedura zwraca inne wyniki użytkownikowi A i użytkownikowi B. Sytuację dodatkowo komplikuje pula połączeń w aplikacjach .NET: fizyczne połączenie jest przetrzymywane i odzyskiwane, więc ustawienie wykonane raz może przetrwać dłużej, niż programista zakłada, albo zniknąć w losowym momencie. Dlatego w kodzie produkcyjnym lepiej nie polegać na języku sesji, tylko wymuszać interpretację dat jawnie.

Klasyczna pułapka z datami i sposób jej ominięcia

Zapis literału '03/04/2026' oznacza trzeciego kwietnia przy ustawieniu polskim i czwartego marca przy amerykańskim — i nie ma tu żadnego błędu do zgłoszenia, po prostu wynik jest inny. Bywa gorzej: '25/12/2026' przy mdy wyrzuci komunikat o konwersji poza zakres, więc awaria pojawia się dopiero pod koniec miesiąca. Bezpieczne są dwa zapisy: 'YYYYMMDD' bez separatorów, czytany identycznie niezależnie od ustawień, oraz pełny format ISO 8601 'YYYY-MM-DDTHH:MM:SS' dla typów datetime2 i datetimeoffset. Uwaga: sam zapis 'YYYY-MM-DD' z myślnikami przy typie datetime bywa interpretowany zgodnie z DATEFORMAT, co jest źródłem trudnych do wykrycia pomyłek w raportach.

Diagnostyka baz programów handlowych

Rozjazdy językowe sesji dają o sobie znać w raportach sprzedaży i zestawieniach okresowych: tydzień liczony od niedzieli zamiast od poniedziałku przesuwa cały podział na tygodnie, a źle zinterpretowana data dokumentu potrafi wrzucić fakturę do sąsiedniego miesiąca. Wdrażamy i serwisujemy oprogramowanie handlowe oparte o SQL Server — Subiekt, WAPRO i Comarch — więc regularnie rozplątujemy takie przypadki: sprawdzamy język loginów, ustawienia instancji i sposób budowania zapytań w raportach niestandardowych. Obsługujemy zarówno firmy z serwerownią, jak i jednoosobowe działalności z bazą na jednym komputerze.

+48 22 100 48 29Zadzwoń teraz · serwisant w 1 godzinę