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