Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Obtenir la langue actuellement utilisée dans SQL Server

Il existe plusieurs façons d'obtenir la langue actuellement utilisée dans SQL Server.

La langue de la session en cours sera souvent la langue par défaut pour la connexion, mais ce n'est pas nécessairement toujours le cas. Un utilisateur peut changer la langue courante pendant la session.

En outre, certaines des fonctions intégrées de SQL Server acceptent un argument qui vous permet de spécifier une langue pour cette requête spécifique.

Cet article vous montre comment retourner la langue actuellement utilisée.

@@LANGUE

Le @@LANGUAGE La fonction de configuration est spécialement conçue pour renvoyer le nom de la langue actuellement utilisée.

Voici un exemple d'utilisation.

SELECT @@LANGUAGE;

Résultat :

us_english

C'est la langue par défaut pour ma connexion.

Voici un exemple de changement de langue pendant ma session, puis d'exécution de @@LANGUAGE à nouveau.

SET LANGUAGE British;
SELECT @@LANGUAGE;

Résultat :

British

OPTIONS UTILISATEUR DBCC

Les DBCC USEROPTIONS vous permet également d'obtenir la langue actuellement utilisée, ainsi que quelques autres options de configuration.

DBCC USEROPTIONS;

Résultat :

+-------------------------+----------------+
 | 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 |
 +-------------------------+----------------+  

J'ai exécuté cette requête immédiatement après l'exemple précédent et elle renvoie toujours le britannique comme langue.

Notez également que la langue affecte implicitement le dateformat et datefirst valeurs. Les valeurs par défaut pour ces valeurs lors de l'utilisation de us_english est mdy et 7 respectivement.

Si je change la langue en us_English et exécutez DBCC USEROPTIONS encore une fois, vous verrez que le dateformat et datefirst les paramètres reviennent au format US.

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 |
 +-------------------------+----------------+ 

Cependant, vous pouvez toujours définir le format de date séparément de la langue si nécessaire.

sys.dm_exec_requests

Les sys.dm_exec_requests view vous permet de récupérer la langue d'un processus utilisateur spécifique. Dans ce cas, nous pouvons utiliser @@SPID pour spécifier le processus utilisateur actuel.

SELECT r.language
FROM master.sys.dm_exec_requests r
WHERE r.session_id = @@SPID;

Résultat :

us_english