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).