Pokaždé, když vytvoříte nové přihlášení na SQL Server, máte na výběr, zda tomuto přihlášení přiřadíte výchozí jazyk. Pokud tak neučiníte, bude přihlášení používat výchozí jazyk, jak je zadáno v možnosti konfigurace serveru výchozího jazyka.
Tento článek ukazuje, jak nastavit možnost konfigurace výchozího jazykového serveru v SQL Server pomocí T-SQL.
Nejprve zkontrolujte výchozí jazyková nastavení serveru
Než něco změníme, měli bychom zkontrolovat, jaká jsou aktuální nastavení.
sp_configure
uložená procedura umožňuje zobrazit nebo změnit globální nastavení konfigurace pro aktuální server.
Chcete-li vrátit všechny možnosti konfigurace, můžete provést tuto uloženou proceduru bez předávání jakýchkoli argumentů. Takhle:
EXEC sp_configure;
To však vrátí poměrně velkou sadu výsledků.
Vzhledem k tomu, že nás zajímá pouze výchozí nastavení jazyka, můžeme spustit následující kód:
EXEC sp_configure @configname='default language';
A v mém testovacím prostředí to vrátí následující:
+------------------+-----------+-----------+----------------+-------------+ | name | minimum | maximum | config_value | run_value | |------------------+-----------+-----------+----------------+-------------| | default language | 0 | 9999 | 0 | 0 | +------------------+-----------+-----------+----------------+-------------+
Hlavní hodnota, která nás zajímá, je config_value
a run_value
. V tomto případě jsou obě hodnoty 0
, což je ID jazyka pro us_english
.
Můžeme je změnit pomocí následujícího kódu:
EXEC sp_configure 'default language', 5; RECONFIGURE;
Výsledek:
Configuration option 'default language' changed from 0 to 5. Run the RECONFIGURE statement to install.
Všimněte si, že hodnoty pro config_value
a run_value
nejsou automaticky ekvivalentní. Po aktualizaci nastavení konfigurace pomocí sp_configure
, musíte aktualizovat run_value
buď pomocí RECONFIGURE
nebo RECONFIGURE WITH OVERRIDE
. Vzhledem k tomu, že jsme to již udělali v tomto příkladu, můžeme začít.
Když tedy znovu zkontrolujeme nastavení, můžeme vidět nové hodnoty:
EXEC sp_configure @configname='default language';
Výsledek:
+------------------+-----------+-----------+----------------+-------------+ | name | minimum | maximum | config_value | run_value | |------------------+-----------+-----------+----------------+-------------| | default language | 0 | 9999 | 5 | 5 | +------------------+-----------+-----------+----------------+-------------+
V tomto případě jsme hodnoty změnili na 5
, což je ID jazyka pro Español
(španělština).
Můžete se také zeptat na sys.configurations
view, chcete-li vrátit hodnoty možností konfigurace serveru, chcete-li.
Jak najít ID jazyka
Pokud neznáte ID jazyka, na který potřebujete změnit jazyk, můžete spustit sp_helplanguage
uložené procedury. Můžete jej spustit bez argumentů, v takovém případě budou vráceny všechny jazyky, nebo můžete zadat název jazyka nebo alias, aby byl vrácen pouze tento jazyk.
Zde je příklad:
EXEC sp_helplanguage Spanish;
Zde je výsledek, který dostanu, když to spustím v mssql-cli:
-[ RECORD 1 ]------------------------- langid | 5 dateformat | dmy datefirst | 1 upgrade | 0 name | Español alias | Spanish months | Enero,Febrero,Marzo,Abril,Mayo,Junio,Julio,Agosto,Septiembre,Octub shortmonths | Ene,Feb,Mar,Abr,May,Jun,Jul,Ago,Sep,Oct,Nov,Dic days | Lunes,Martes,Miércoles,Jueves,Viernes,Sábado,Domingo lcid | 3082 msglangid | 3082
A vidíme, že ID jazyka pro španělštinu je 5
. To je hodnota, kterou poskytujeme při provádění sp_configure
změnit výchozí jazyk na španělštinu.
Když tedy nyní vytvoříme nové přihlášení, jeho výchozím jazykem bude španělština (pokud při vytváření přihlášení výslovně neposkytneme výchozí jazyk).
Vytvořit nové přihlášení – bez zadání výchozího jazyka
Vytvořme tedy nové přihlášení bez zadání výchozího jazyka:
CREATE LOGIN Julio WITH PASSWORD = 't35Tin9345!'
A nyní zkontrolujte výchozí jazyk pro toto přihlášení:
SELECT default_language_name FROM master.sys.server_principals WHERE name = 'Julio';
Dostaneme následující výsledek:
+-------------------------+ | default_language_name | |-------------------------| | Español | +-------------------------+
Protože jsme pro toto přihlášení neurčili výchozí jazyk, používá výchozí jazyk, jak je nakonfigurován na úrovni serveru.
Vytvořit nové přihlášení – s výchozím jazykem
Pokud však při vytváření přihlášení určíme výchozí jazyk:
CREATE LOGIN Einstein WITH PASSWORD = 't35Tin9345!', DEFAULT_LANGUAGE = German;
A pak dotaz sys.server_principals
znovu:
SELECT default_language_name FROM master.sys.server_principals WHERE name = 'Einstein';
Dostaneme následující výsledek:
+-------------------------+ | default_language_name | |-------------------------| | German | +-------------------------+
Konfigurace serveru se tedy použije pouze tehdy, když explicitně neurčíte výchozí jazyk pro jednotlivé přihlášení.
Všimněte si, že uživatel může změnit používaný jazyk v rámci své relace. Jen proto, že mají výchozí jazyk, neznamená to, že na něm zůstali. Další informace naleznete v části 3 způsoby, jak získat jazyk aktuální relace na serveru SQL Server (T-SQL) a Jak nastavit aktuální jazyk na serveru SQL (T-SQL).