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

Comment trouver la langue par défaut d'un utilisateur dans SQL Server (T-SQL)

Dans SQL Server, vous pouvez connaître la langue par défaut pour un utilisateur donné en interrogeant le sys.server_principals vue du catalogue système.

Cette vue contient une ligne pour chaque principal au niveau du serveur. Il contient des informations telles que le nom du principal, le type, la date de création/modification, la base de données par défaut, la langue par défaut, etc. Un principal est une entité qui peut demander des ressources SQL Server.

Un mandataire peut être l'un des éléments suivants :

Principaux au niveau de Windows

  • Connexion au domaine Windows
  • Connexion locale Windows

Pont principal au niveau de SQL Server

  • Connexion au serveur SQL

Principaux au niveau de la base de données

  • Utilisateur de la base de données
  • Rôle de base de données
  • Rôle d'application

Exemple de renvoi de la langue par défaut d'un mandataire

Pour obtenir la langue par défaut pour un principal donné, vous pouvez interroger le sys.server_principals afficher et utiliser un WHERE clause pour le nom principal qui vous intéresse.

Comme ceci :

SELECT 
    type_desc,
    default_database_name,
    default_language_name 
FROM master.sys.server_principals
WHERE name = 'sa';

Résultat :

+-------------+-------------------------+-------------------------+
| type_desc   | default_database_name   | default_language_name   |
|-------------+-------------------------+-------------------------|
| SQL_LOGIN   | master                  | us_english              |
+-------------+-------------------------+-------------------------+

Cet exemple obtient la langue par défaut pour le sa principal. Le nom principal est unique au sein d'un serveur. Cet exemple renvoie également la base de données par défaut ainsi que le type principal. Dans ce cas, le principal est une connexion SQL Server.

Voici un autre exemple utilisant un autre utilisateur :

SELECT 
    type_desc,
    default_database_name,
    default_language_name 
FROM master.sys.server_principals
WHERE name = 'Bach';

Résultat :

+-------------+-------------------------+-------------------------+
| type_desc   | default_database_name   | default_language_name   |
|-------------+-------------------------+-------------------------|
| SQL_LOGIN   | Music                   | German                  |
+-------------+-------------------------+-------------------------+

Dans ce cas, la connexion a une base de données et une langue par défaut différentes.

Bien sûr, vous pouvez toujours utiliser un astérisque pour renvoyer toutes les colonnes si nécessaire.

Notez que toute connexion peut voir son propre nom de connexion, les connexions système et les rôles de serveur fixes. Pour voir d'autres connexions, nécessite ALTER ANY LOGIN , ou une permission sur le login. Pour voir les rôles de serveur définis par l'utilisateur, nécessite ALTER ANY SERVER ROLE , ou l'appartenance au rôle.

Langue par défaut vs langue actuelle

Dans la plupart des cas, la langue actuelle d'un utilisateur pour sa session sera sa langue par défaut. Mais ce n'est pas toujours nécessairement le cas, car un utilisateur peut changer la langue actuelle en utilisant le SET LANGUAGE déclaration. Cela changera la langue de la session en cours, mais leur langue par défaut restera quelle qu'elle soit.

Pour en savoir plus, consultez Comment définir la langue actuelle dans SQL Server (T-SQL) et 3 façons d'obtenir la langue de la session actuelle dans SQL Server (T-SQL).