Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

So finden Sie die Standardsprache eines Benutzers in SQL Server (T-SQL)

In SQL Server können Sie die Standardsprache für einen bestimmten Benutzer herausfinden, indem Sie sys.server_principals abfragen Systemkatalogansicht.

Diese Ansicht enthält eine Zeile für jeden Prinzipal auf Serverebene. Es enthält Informationen wie Name, Typ, Erstellungs-/Änderungsdatum, Standarddatenbank, Standardsprache usw. des Prinzipals. Ein Prinzipal ist eine Entität, die SQL Server-Ressourcen anfordern kann.

Ein Prinzipal könnte einer der folgenden sein:

Prinzipale auf Windows-Ebene

  • Windows-Domänenanmeldung
  • Lokale Windows-Anmeldung

Prinzipal auf SQL Server-Ebene

  • SQL Server-Anmeldung

Principals auf Datenbankebene

  • Datenbankbenutzer
  • Datenbankrolle
  • Anwendungsrolle

Beispiel für die Rückgabe der Standardsprache eines Prinzipals

Um die Standardsprache für einen bestimmten Prinzipal abzurufen, können Sie sys.server_principals abfragen ein WHERE anzeigen und verwenden -Klausel für den Prinzipalnamen, an dem Sie interessiert sind.

So:

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

Ergebnis:

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

Dieses Beispiel ruft die Standardsprache für sa ab Rektor. Der Prinzipalname ist innerhalb eines Servers eindeutig. Dieses Beispiel gibt auch die Standarddatenbank sowie den Prinzipaltyp zurück. In diesem Fall ist der Prinzipal eine SQL Server-Anmeldung.

Hier ist ein weiteres Beispiel mit einem anderen Benutzer:

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

Ergebnis:

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

In diesem Fall hat das Login eine andere Standarddatenbank und -sprache.

Natürlich können Sie bei Bedarf immer ein Sternchen verwenden, um alle Spalten zurückzugeben.

Beachten Sie, dass jeder Login seinen eigenen Login-Namen, die System-Logins und die festen Serverrollen sehen kann. Um andere Logins zu sehen, ist ALTER ANY LOGIN erforderlich , oder eine Berechtigung für die Anmeldung. Um benutzerdefinierte Serverrollen anzuzeigen, ist ALTER ANY SERVER ROLE erforderlich , oder Mitgliedschaft in der Rolle.

Standardsprache vs. aktuelle Sprache

In den meisten Fällen ist die aktuelle Sprache eines Benutzers für seine Sitzung seine Standardsprache. Dies ist jedoch nicht immer unbedingt der Fall, da ein Benutzer die aktuelle Sprache ändern kann, indem er SET LANGUAGE verwendet Erklärung. Dadurch wird die Sprache für die aktuelle Sitzung geändert, aber ihre Standardsprache bleibt unverändert.

Weitere Informationen finden Sie unter How to Set the Current Language in SQL Server (T-SQL) und 3 Ways to Get the Language of the Current Session in SQL Server (T-SQL).