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