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

Obter o idioma atualmente sendo usado no SQL Server


Existem várias maneiras de obter o idioma que está sendo usado no SQL Server.

O idioma da sessão atual geralmente será o idioma padrão para o login, mas isso nem sempre é necessariamente o caso. Um usuário pode alterar o idioma atual durante a sessão.

Além disso, algumas das funções internas do SQL Server aceitam um argumento que permite especificar um idioma para essa consulta específica.

Este artigo mostra como retornar o idioma que está sendo usado no momento.

@@LANGUAGE


O @@LANGUAGE A função de configuração é feita especificamente para retornar o nome do idioma que está sendo usado no momento.

Aqui está um exemplo de uso.
SELECT @@LANGUAGE;

Resultado:
us_english

Este é o idioma padrão para o meu login.

Aqui está um exemplo de como alterar o idioma durante minha sessão e, em seguida, executar @@LANGUAGE novamente.
SET LANGUAGE British;
SELECT @@LANGUAGE;

Resultado:
British

OPÇÕES DE USUÁRIO DBCC


As DBCC USEROPTIONS também permite que você obtenha o idioma que está sendo usado no momento, juntamente com algumas outras opções de configuração.
DBCC USEROPTIONS;

Resultado:
+-------------------------+----------------+
 | Set Option              | Value          |
 |-------------------------+----------------|
 | textsize                | -1             |
 | language                | British        |
 | dateformat              | dmy            |
 | datefirst               | 1              |
 | lock_timeout            | 5000           |
 | quoted_identifier       | SET            |
 | arithabort              | SET            |
 | ansi_null_dflt_on       | SET            |
 | ansi_warnings           | SET            |
 | ansi_padding            | SET            |
 | ansi_nulls              | SET            |
 | concat_null_yields_null | SET            |
 | isolation level         | read committed |
 +-------------------------+----------------+  

Executei essa consulta imediatamente após o exemplo anterior e, portanto, ela ainda retorna British como o idioma.

Observe também que a linguagem afeta implicitamente o dateformat e datefirst valores. Os valores padrão para esses valores ao usar us_english é mdy e 7 respectivamente.

Se eu mudar o idioma de volta para us_English e execute DBCC USEROPTIONS novamente, você verá que o dateformat e datefirst as configurações são revertidas para o formato americano.
SET LANGUAGE us_English; 
 ....... DBCC USEROPTIONS;                                                       
 Time: 0.740s
 Changed language setting to us_english.
 +-------------------------+----------------+
 | Set Option              | Value          |
 |-------------------------+----------------|
 | textsize                | -1             |
 | language                | us_english     |
 | dateformat              | mdy            |
 | datefirst               | 7              |
 | lock_timeout            | 5000           |
 | quoted_identifier       | SET            |
 | arithabort              | SET            |
 | ansi_null_dflt_on       | SET            |
 | ansi_warnings           | SET            |
 | ansi_padding            | SET            |
 | ansi_nulls              | SET            |
 | concat_null_yields_null | SET            |
 | isolation level         | read committed |
 +-------------------------+----------------+ 

No entanto, você sempre pode definir o formato de data separadamente para o idioma, se necessário.

sys.dm_exec_requests


Os sys.dm_exec_requests view permite que você recupere o idioma para um processo de usuário específico. Neste caso podemos usar @@SPID para especificar o processo do usuário atual.
SELECT r.language
FROM master.sys.dm_exec_requests r
WHERE r.session_id = @@SPID;

Resultado:
us_english