Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Como definir o idioma padrão para todos os novos logons no SQL Server (T-SQL)


Cada vez que você cria um novo logon no SQL Server, você tem a opção de atribuir um idioma padrão a esse logon. Se você não fizer isso, o login usará o idioma padrão conforme especificado na opção de configuração do servidor de idioma padrão.

Este artigo demonstra como definir a opção de configuração do servidor de idioma padrão no SQL Server, usando T-SQL.


Primeiro, verifique as configurações de idioma padrão do servidor


Antes de prosseguirmos e alterarmos qualquer coisa, devemos verificar quais são as configurações atuais.

sp_configure O procedimento armazenado permite que você visualize ou altere as configurações globais do servidor atual.

Para retornar todas as opções de configuração, você pode executar este procedimento armazenado sem passar nenhum argumento. Assim:
EXEC sp_configure;

No entanto, isso retorna um conjunto de resultados bastante grande.

Como estamos interessados ​​apenas na configuração de idioma padrão, podemos executar o seguinte código:
EXEC sp_configure @configname='default language';

E no meu ambiente de teste, isso retorna o seguinte:
+------------------+-----------+-----------+----------------+-------------+
| name             | minimum   | maximum   | config_value   | run_value   |
|------------------+-----------+-----------+----------------+-------------|
| default language | 0         | 9999      | 0              | 0           |
+------------------+-----------+-----------+----------------+-------------+

Os principais valores nos quais estamos interessados ​​são config_value e run_value . Neste caso, ambos os valores são 0 , que é o ID do idioma para us_english .

Podemos alterá-los usando o seguinte código:
EXEC sp_configure 'default language', 5;
RECONFIGURE;

Resultado:
Configuration option 'default language' changed from 0 to 5. Run the RECONFIGURE statement to install. 

Observe que os valores para config_valuerun_value não são automaticamente equivalentes. Depois de atualizar uma definição de configuração usando sp_configure , você deve atualizar run_value usando RECONFIGURE ou RECONFIGURE WITH OVERRIDE . Dado que já fizemos isso neste exemplo, estamos prontos.

Então, quando verificamos as configurações novamente, podemos ver os novos valores:
EXEC sp_configure @configname='default language';

Resultado:
+------------------+-----------+-----------+----------------+-------------+
| name             | minimum   | maximum   | config_value   | run_value   |
|------------------+-----------+-----------+----------------+-------------|
| default language | 0         | 9999      | 5              | 5           |
+------------------+-----------+-----------+----------------+-------------+

Nesse caso, alteramos os valores para 5 , que é o código do idioma para Español (Espanhol).

Você também pode consultar as sys.configurations view para retornar os valores das opções de configuração do servidor, se preferir.

Como encontrar o ID do idioma


Se você não souber o ID do idioma para o qual precisa alterar, execute o comando sp_helplanguage procedimento armazenado. Você pode executá-lo sem argumentos, caso em que todos os idiomas serão retornados, ou você pode fornecer um nome de idioma ou alias para que apenas esse idioma seja retornado.

Aqui está um exemplo:
EXEC sp_helplanguage Spanish;

Aqui está o resultado que recebo quando executo isso no 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

E podemos ver que o ID do idioma para espanhol é 5 . Então esse é o valor que fornecemos ao executar sp_configure para alterar o idioma padrão para espanhol.

Portanto, agora, quando criamos um novo login, seu idioma padrão será espanhol (a menos que forneçamos explicitamente um idioma padrão ao criar o login).

Criar um novo login – sem especificar o idioma padrão


Então vamos criar um novo login sem especificar um idioma padrão:
CREATE LOGIN Julio   
    WITH PASSWORD = 't35Tin9345!'

E agora verifique o idioma padrão para esse login:
SELECT default_language_name 
FROM master.sys.server_principals
WHERE name = 'Julio';

Obtemos o seguinte resultado:
+-------------------------+
| default_language_name   |
|-------------------------|
| Español                 |
+-------------------------+

Como não especificamos um idioma padrão para este login, ele usa o idioma padrão conforme configurado no nível do servidor.

Criar um novo login – com um idioma padrão


Mas se especificarmos um idioma padrão ao criarmos o login:
CREATE LOGIN Einstein   
    WITH PASSWORD = 't35Tin9345!',
    DEFAULT_LANGUAGE = German;

E, em seguida, consulte sys.server_principals novamente:
SELECT default_language_name 
FROM master.sys.server_principals
WHERE name = 'Einstein';

Obtemos o seguinte resultado:
+-------------------------+
| default_language_name   |
|-------------------------|
| German                  |
+-------------------------+

Portanto, a configuração do servidor só é usada quando você não especifica explicitamente um idioma padrão para o login individual.

Observe que um usuário pode alterar o idioma em uso em sua sessão. Só porque eles têm um idioma padrão, isso não significa que eles estão presos a ele. Para obter mais informações, consulte 3 maneiras de obter o idioma da sessão atual no SQL Server (T-SQL) e como definir o idioma atual no SQL Server (T-SQL).