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

Ustawienia regionalne SQL Server

Termin Definicja
Ustawienia regionalne SQL Server

Ustawienia regionalne SQL Server dziedziczone są z systemu operacyjnego, chyba że jawnie je nadpisano.

Co oznaczają ustawienia regionalne w SQL Server

Ustawienia regionalne SQL Server określają sposób interpretowania i prezentowania części danych zależnych od języka, formatu daty, separatorów dziesiętnych oraz ustawień systemu Windows. W praktyce trzeba jednak rozdzielić ustawienia komputera, konfigurację instancji SQL Server, ustawienia konkretnego logowania oraz parametry sesji. Nie wszystkie elementy widoczne w systemie operacyjnym są automatycznie używane przez silnik bazy danych.

Podczas instalacji SQL Server środowisko systemowe może wpływać na wybór domyślnego języka i ustawienia początkowe. Później zachowanie zapytań zależy przede wszystkim od języka przypisanego do logowania oraz od poleceń wykonanych w danej sesji. Ustawienia regionalne klienta, na przykład Windows lub aplikacji używanej do połączenia z bazą, mogą natomiast decydować o sposobie wyświetlenia daty i liczb po odebraniu danych.

Język logowania, format daty i sesja

SQL Server przechowuje dla logowania między innymi ustawienie języka. Można je sprawdzić w widoku katalogowym sys.server_principals, a domyślny język serwera można odczytać z konfiguracji za pomocą sp_configure 'default language'. Wartość ta jest używana wtedy, gdy logowanie nie ma własnego ustawienia języka. Język wpływa między innymi na nazwy miesięcy, komunikaty oraz domyślny format daty dla sesji.

W obrębie połączenia można jawnie zmienić język poleceniem SET LANGUAGE albo ustawić kolejność składników daty poleceniem SET DATEFORMAT. Przykładowo SET DATEFORMAT ymd wymusza kolejność rok-miesiąc-dzień podczas interpretowania niektórych tekstowych wartości daty. Ustawienie sesji obowiązuje tylko w danym połączeniu i nie zmienia konfiguracji innych użytkowników.

Niebezpieczne jest przekazywanie dat jako niejednoznacznych napisów, takich jak 03/04/2026, ponieważ ich znaczenie może zależeć od ustawień języka i formatu daty. Bezpieczniejsze jest używanie parametrów zapytań oraz typów date, datetime2 lub datetimeoffset. Dla stałych tekstowych SQL Server rozpoznaje także jednoznaczne formaty, lecz aplikacja nadal powinna przekazywać wartości jako parametry, a nie składać je przez konkatenację tekstu.

Ustawienia regionalne a sortowanie i typy danych

Ustawienia regionalne nie są tym samym co sortowanie kolumn. Za porównywanie i sortowanie tekstu odpowiada collation, który określa między innymi alfabet, reguły porównywania znaków, rozróżnianie wielkości liter oraz akcentów. Collation może być przypisany do serwera, bazy danych, kolumny albo wyrażenia. Zmiana języka sesji lub formatu daty nie zmienia collation i nie naprawia problemów wynikających z niezgodnego sortowania tekstu.

Separatory dziesiętne prezentowane użytkownikowi mogą zależeć od aplikacji klienckiej, ale wartości w kolumnach typu decimal, numeric, money i float są przechowywane jako dane liczbowe, a nie jako sformatowane napisy. Konwersja liczby lub daty do tekstu może wprowadzić zależność od języka sesji albo kodu aplikacji. Dlatego formatowanie przeznaczone dla interfejsu użytkownika powinno być wykonywane na końcu, poza warstwą przechowywania danych.

Do diagnostyki bieżącej sesji można użyć poleceń SELECT @@LANGUAGE, DBCC USEROPTIONS oraz SELECT SESSIONPROPERTY('LANGUAGE'). Wyniki pozwalają ustalić, czy problem wynika z odziedziczonej konfiguracji logowania, z polecenia SET LANGUAGE lub SET DATEFORMAT, czy z formatowania zastosowanego przez program kliencki.

Diagnostyka problemów z regionalizacją SQL Server

Typowym objawem niezgodnych ustawień jest błąd konwersji tekstu na datę, zamiana dnia z miesiącem albo różne wyniki tego samego zapytania wykonywanego przez dwa narzędzia. Diagnostykę należy rozpocząć od ustalenia wersji SQL Server, instancji, nazwy logowania, bazy danych i parametrów konkretnej sesji. Następnie trzeba sprawdzić definicję kolumn oraz to, czy aplikacja przesyła wartości jako parametry o właściwym typie.

W przypadku dat należy unikać przechowywania informacji w kolumnach tekstowych. Kolumny date służą do przechowywania dat bez czasu, datetime2 przechowuje datę i czas z większą precyzją niż starszy typ datetime, a datetimeoffset dodatkowo przechowuje przesunięcie względem UTC. Samo ustawienie regionu systemu Windows nie zmienia typu kolumny ani danych już zapisanych w tabeli.

Jeżeli po zmianie ustawień regionalnych komputera problem występuje tylko w jednym programie, należy porównać jego sterownik, sposób tworzenia połączenia, ustawienia języka logowania i kod odpowiedzialny za konwersję. Przy pracach diagnostycznych oraz naprawie środowiska komputerowego warto także sprawdzić konfigurację usług, poprawność klienta SQL oraz zgodność ustawień regionalnych systemu z wymaganiami używanego oprogramowania.

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