Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Как да зададете езика по подразбиране за всички нови влизания в SQL Server (T-SQL)

Всеки път, когато създавате ново име за вход в 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).


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server:трябва ли да използвам таблици information_schema над sys таблици?

  2. Връщане на привилегии на колона от свързан сървър в SQL Server (T-SQL примери)

  3. Ограничение за размера на индекса от 900 байта в дължината на знаците

  4. Примерна заявка за свързан сървър на SQL Server

  5. Ще се представят ли заявките ANSI JOIN спрямо не-ANSI JOIN по различен начин?