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

Comment définir la langue par défaut pour toutes les nouvelles connexions dans SQL Server (T-SQL)

Chaque fois que vous créez une nouvelle connexion dans SQL Server, vous avez le choix d'attribuer une langue par défaut à cette connexion. Si vous ne le faites pas, la connexion utilisera la langue par défaut spécifiée dans l'option de configuration du serveur de langue par défaut.

Cet article explique comment définir l'option de configuration du serveur de langue par défaut dans SQL Server, à l'aide de T-SQL.

Tout d'abord, vérifiez les paramètres de langue par défaut du serveur

Avant d'aller de l'avant et de changer quoi que ce soit, nous devrions vérifier quels sont les paramètres actuels.

Le sp_configure La procédure stockée vous permet d'afficher ou de modifier les paramètres de configuration globaux du serveur actuel.

Pour renvoyer toutes les options de configuration, vous pouvez exécuter cette procédure stockée sans passer d'arguments. Comme ceci :

EXEC sp_configure;

Cependant, cela renvoie un ensemble de résultats assez volumineux.

Étant donné que nous ne sommes intéressés que par le paramètre de langue par défaut, nous pouvons exécuter le code suivant :

EXEC sp_configure @configname='default language';

Et sur mon environnement de test, cela renvoie ce qui suit :

+------------------+-----------+-----------+----------------+-------------+
| name             | minimum   | maximum   | config_value   | run_value   |
|------------------+-----------+-----------+----------------+-------------|
| default language | 0         | 9999      | 0              | 0           |
+------------------+-----------+-----------+----------------+-------------+

Les principales valeurs qui nous intéressent sont config_value et run_value . Dans ce cas, les deux valeurs sont 0 , qui est l'ID de langue pour us_english .

Nous pouvons les modifier en utilisant le code suivant :

EXEC sp_configure 'default language', 5;
RECONFIGURE;

Résultat :

Configuration option 'default language' changed from 0 to 5. Run the RECONFIGURE statement to install. 

Notez que les valeurs de config_value et run_value ne sont pas automatiquement équivalents. Après avoir mis à jour un paramètre de configuration à l'aide de sp_configure , vous devez mettre à jour run_value en utilisant soit RECONFIGURE ou RECONFIGURE WITH OVERRIDE . Étant donné que nous l'avons déjà fait dans cet exemple, nous sommes prêts à partir.

Ainsi, lorsque nous vérifions à nouveau les paramètres, nous pouvons voir les nouvelles valeurs :

EXEC sp_configure @configname='default language';

Résultat :

+------------------+-----------+-----------+----------------+-------------+
| name             | minimum   | maximum   | config_value   | run_value   |
|------------------+-----------+-----------+----------------+-------------|
| default language | 0         | 9999      | 5              | 5           |
+------------------+-----------+-----------+----------------+-------------+

Dans ce cas, nous avons changé les valeurs en 5 , qui est l'ID de langue pour Español (Espagnol).

Vous pouvez également interroger les sys.configurations view pour retourner les valeurs des options de configuration du serveur si vous préférez.

Comment trouver l'ID de langue

Si vous ne connaissez pas l'ID de langue de la langue que vous devez changer, vous pouvez exécuter le sp_helplanguage procédure stockée. Vous pouvez l'exécuter sans arguments, auquel cas toutes les langues seront renvoyées, ou vous pouvez fournir un nom de langue ou un alias afin que seule cette langue soit renvoyée.

Voici un exemple :

EXEC sp_helplanguage Spanish;

Voici le résultat que j'obtiens lorsque je l'exécute dans 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

Et nous pouvons voir que l'ID de langue pour l'espagnol est 5 . C'est donc la valeur que nous fournissons lors de l'exécution de sp_configure pour changer la langue par défaut en espagnol.

Alors maintenant, lorsque nous créons une nouvelle connexion, sa langue par défaut sera l'espagnol (sauf si nous fournissons explicitement une langue par défaut lors de la création de la connexion).

Créer une nouvelle connexion - sans spécifier la langue par défaut

Créons donc un nouveau login sans spécifier de langue par défaut :

CREATE LOGIN Julio   
    WITH PASSWORD = 't35Tin9345!'

Et maintenant, vérifiez la langue par défaut pour cette connexion :

SELECT default_language_name 
FROM master.sys.server_principals
WHERE name = 'Julio';

Nous obtenons le résultat suivant :

+-------------------------+
| default_language_name   |
|-------------------------|
| Español                 |
+-------------------------+

Étant donné que nous n'avons pas spécifié de langue par défaut pour cette connexion, elle utilise la langue par défaut telle que configurée au niveau du serveur.

Créer une nouvelle connexion - avec une langue par défaut

Mais si nous spécifions une langue par défaut lors de la création du login :

CREATE LOGIN Einstein   
    WITH PASSWORD = 't35Tin9345!',
    DEFAULT_LANGUAGE = German;

Et puis interrogez sys.server_principals encore :

SELECT default_language_name 
FROM master.sys.server_principals
WHERE name = 'Einstein';

Nous obtenons le résultat suivant :

+-------------------------+
| default_language_name   |
|-------------------------|
| German                  |
+-------------------------+

Ainsi, la configuration du serveur n'est utilisée que lorsque vous ne spécifiez pas explicitement une langue par défaut pour la connexion individuelle.

Notez qu'un utilisateur peut changer la langue utilisée au sein de sa session. Ce n'est pas parce qu'ils ont une langue par défaut qu'ils sont coincés avec. Pour plus d'informations, consultez 3 façons d'obtenir la langue de la session actuelle dans SQL Server (T-SQL) et Comment définir la langue actuelle dans SQL Server (T-SQL).