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

Modifier la langue de la session en cours dans SQL Server

Vous savez peut-être que lorsque vous vous connectez à SQL Server, la langue de cette session est généralement déterminée par votre connexion. Lorsqu'un identifiant est créé, une langue par défaut lui est attribuée.

La langue de la session détermine la datetime formats et messages système.

Bien que vous puissiez certainement changer la langue par défaut pour une connexion, vous pouvez également remplacer la langue par défaut dans une session si vous en avez besoin. Vous pouvez basculer entre les langues si nécessaire. Ou vous pouvez même ouvrir deux connexions distinctes et appliquer une langue différente à chacune d'elles.

Cet article explique comment changer la langue au sein d'une session.

RÉGLER LA LANGUE

Le SET LANGUAGE vous permet de définir l'environnement linguistique pour la session en cours.

Voici un exemple.

SET LANGUAGE British;

Cela définit la langue actuelle sur le britannique.

Je peux le vérifier avec la requête suivante.

SELECT @@LANGUAGE;

Résultat :

British

Formats de date

Vous devez savoir que changer la langue au sein d'une session modifie également le format de la date.

Voici une autre requête pour illustrer cela.

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

Notez que dateformat est dmy et datefirst est 1 . Ceci est conforme au format de date britannique.

Voici ce qui se passe si je change la langue en us_english .

SET LANGUAGE us_english; 
 ....... DBCC USEROPTIONS;                                                             
 Time: 0.738s
 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 |
 +-------------------------+----------------+  

Notez que le format de date est implicitement modifié pour respecter le format de date américain.

Si vous trouvez cela problématique, vous pouvez toujours changer le format de la date sans changer la langue.

Définir la langue au niveau de la requête

Certaines fonctions acceptent un argument "culture" qui vous permet de spécifier une langue à utiliser pour cette requête uniquement. En d'autres termes, vous pouvez changer la langue ad hoc dans une requête, sans avoir à changer la langue de votre session en cours.

Voici un exemple.

SET LANGUAGE us_english;
SELECT 
  FORMAT(GETDATE(), 'd') AS [My Default],
  FORMAT(GETDATE(), 'd', 'en-GB') AS [British],
  FORMAT(GETDATE(), 'd', 'de-DE') AS [German];

Résultat :

+--------------+------------+------------+
 | My Default   | British    | German     |
 |--------------+------------+------------|
 | 3/29/2020    | 29/03/2020 | 29.03.2020 |
 +--------------+------------+------------+  

Obtenir une liste de langues

Vous pouvez exécuter la requête suivante pour obtenir une liste des langues disponibles dans SQL Server.

EXEC sp_helplanguage;

Vous pouvez également le limiter à une langue spécifique en lui ajoutant le nom ou l'alias de la langue.

EXEC sp_helplanguage Italian;