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.
O
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_value
e run_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).