W SQL Server możesz znaleźć domyślny język dla danego użytkownika, wysyłając zapytanie do sys.server_principals
widok katalogu systemowego.
Ten widok zawiera wiersz dla każdego podmiotu zabezpieczeń na poziomie serwera. Zawiera informacje, takie jak nazwa zleceniodawcy, typ, data utworzenia/modyfikacji, domyślna baza danych, domyślny język itp. Zleceniodawca to jednostka, która może żądać zasobów SQL Server.
Zleceniodawca może być jednym z następujących:
Zleceniodawcy na poziomie Windows
- Logowanie do domeny Windows
- Logowanie lokalne Windows
Zasada na poziomie serwera SQL
- Logowanie do serwera SQL
Zleceniodawcy na poziomie bazy danych
- Użytkownik bazy danych
- Rola bazy danych
- Rola aplikacji
Przykład zwracania domyślnego języka zleceniodawcy
Aby uzyskać domyślny język dla danego podmiotu, możesz zapytać sys.server_principals
wyświetl i użyj WHERE
klauzula dotycząca głównego imienia, które Cię interesuje.
Tak:
SELECT type_desc, default_database_name, default_language_name FROM master.sys.server_principals WHERE name = 'sa';
Wynik:
+-------------+-------------------------+-------------------------+ | type_desc | default_database_name | default_language_name | |-------------+-------------------------+-------------------------| | SQL_LOGIN | master | us_english | +-------------+-------------------------+-------------------------+
Ten przykład pobiera domyślny język dla sa
główny. Główna nazwa jest unikatowa na serwerze. Ten przykład zwraca również domyślną bazę danych oraz typ główny. W tym przypadku zleceniodawcą jest logowanie do serwera SQL.
Oto kolejny przykład z użyciem innego użytkownika:
SELECT type_desc, default_database_name, default_language_name FROM master.sys.server_principals WHERE name = 'Bach';
Wynik:
+-------------+-------------------------+-------------------------+ | type_desc | default_database_name | default_language_name | |-------------+-------------------------+-------------------------| | SQL_LOGIN | Music | German | +-------------+-------------------------+-------------------------+
W takim przypadku login ma inną domyślną bazę danych i język.
Oczywiście zawsze możesz użyć gwiazdki, aby w razie potrzeby zwrócić wszystkie kolumny.
Pamiętaj, że każdy login może zobaczyć własną nazwę logowania, loginy systemowe i stałe role serwera. Aby zobaczyć inne loginy, wymaga ALTER ANY LOGIN
lub pozwolenie na logowanie. Aby zobaczyć role serwera zdefiniowane przez użytkownika, wymaga ALTER ANY SERVER ROLE
lub członkostwo w roli.
Język domyślny a język bieżący
W większości przypadków bieżący język użytkownika sesji będzie językiem domyślnym. Ale nie zawsze tak jest, ponieważ użytkownik może zmienić bieżący język za pomocą SET LANGUAGE
oświadczenie. Spowoduje to zmianę języka bieżącej sesji, ale ich domyślny język pozostanie bez zmian.
Aby dowiedzieć się więcej, zobacz Jak ustawić bieżący język w SQL Server (T-SQL) i 3 sposoby uzyskania języka bieżącej sesji w SQL Server (T-SQL).