Всеки път, когато създавате ново име за вход в SQL Server, имате избор да присвоите език по подразбиране на това влизане. Ако не направите това, входът ще използва езика по подразбиране, както е посочено в опцията за конфигурация на езиковия сървър по подразбиране.
Тази статия демонстрира как да зададете опцията за конфигурация на езиков сървър по подразбиране в SQL Server, използвайки T-SQL.
Първо, проверете езиковите настройки по подразбиране на сървъра
Преди да продължим и да променим нещо, трябва да проверим какви са текущите настройки.
sp_configure
Съхранената процедура ви позволява да преглеждате или променяте глобалните конфигурационни настройки за текущия сървър.
За да върнете всички опции за конфигурация, можете да изпълните тази съхранена процедура, без да предавате никакви аргументи. Като това:
EXEC sp_configure;
Това обаче връща доста голям набор от резултати.
Тъй като се интересуваме само от езиковата настройка по подразбиране, можем да изпълним следния код:
EXEC sp_configure @configname='default language';
И в моята тестова среда това връща следното:
+------------------+-----------+-----------+----------------+-------------+ | name | minimum | maximum | config_value | run_value | |------------------+-----------+-----------+----------------+-------------| | default language | 0 | 9999 | 0 | 0 | +------------------+-----------+-----------+----------------+-------------+
Основните стойности, които ни интересуват, са config_value
и run_value
. В този случай и двете стойности са 0
, което е идентификаторът на езика за us_english
.
Можем да ги променим, като използваме следния код:
EXEC sp_configure 'default language', 5; RECONFIGURE;
Резултат:
Configuration option 'default language' changed from 0 to 5. Run the RECONFIGURE statement to install.
Обърнете внимание, че стойностите за config_value
и run_value
не са автоматично еквивалентни. След актуализиране на конфигурационна настройка с помощта на sp_configure
, трябва да актуализирате run_value
като използвате или RECONFIGURE
или RECONFIGURE WITH OVERRIDE
. Като се има предвид, че вече направихме това в този пример, сме готови.
Така че, когато проверим настройките отново, можем да видим новите стойности:
EXEC sp_configure @configname='default language';
Резултат:
+------------------+-----------+-----------+----------------+-------------+ | name | minimum | maximum | config_value | run_value | |------------------+-----------+-----------+----------------+-------------| | default language | 0 | 9999 | 5 | 5 | +------------------+-----------+-----------+----------------+-------------+
В този случай променихме стойностите на 5
, което е идентификаторът на езика за Español
(испански).
Можете също да направите заявка за sys.configurations
преглед, за да върнете стойностите на опциите за конфигурация на сървъра, ако предпочитате.
Как да намерите идентификатора на езика
Ако не знаете идентификатора на езика, на който трябва да промените, можете да изпълните sp_helplanguage
съхранена процедура. Можете да го стартирате без аргументи, като в този случай ще бъдат върнати всички езици, или можете да предоставите име на език или псевдоним, така че да се връща само този език.
Ето един пример:
EXEC sp_helplanguage Spanish;
Ето резултата, който получавам, когато го стартирам в 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
И можем да видим, че езиковият идентификатор за испански е 5
. Така че това е стойността, която предоставяме при изпълнение на sp_configure
за да промените езика по подразбиране на испански.
Така че сега, когато създаваме ново име за вход, неговият език по подразбиране ще бъде испански (освен ако не предоставим изрично език по подразбиране при създаването на входа).
Създайте ново влизане – без да посочвате езика по подразбиране
Така че нека създадем ново влизане, без да указваме език по подразбиране:
CREATE LOGIN Julio WITH PASSWORD = 't35Tin9345!'
И сега проверете езика по подразбиране за това влизане:
SELECT default_language_name FROM master.sys.server_principals WHERE name = 'Julio';
Получаваме следния резултат:
+-------------------------+ | default_language_name | |-------------------------| | Español | +-------------------------+
Тъй като не сме посочили език по подразбиране за това влизане, той използва езика по подразбиране, както е конфигуриран на ниво сървър.
Създайте ново влизане – с език по подразбиране
Но ако посочим език по подразбиране, когато създаваме данните за вход:
CREATE LOGIN Einstein WITH PASSWORD = 't35Tin9345!', DEFAULT_LANGUAGE = German;
И след това заявете sys.server_principals
отново:
SELECT default_language_name FROM master.sys.server_principals WHERE name = 'Einstein';
Получаваме следния резултат:
+-------------------------+ | default_language_name | |-------------------------| | German | +-------------------------+
Така че конфигурацията на сървъра се използва само когато не посочите изрично език по подразбиране за индивидуалното влизане.
Имайте предвид, че потребителят може да промени използвания език в рамките на своята сесия. Само защото имат език по подразбиране, това не означава, че са останали с него. За повече информация вижте 3 начина да получите езика на текущата сесия в SQL Server (T-SQL) и Как да зададете текущия език в SQL Server (T-SQL).