sql >> Database teknologi >  >> RDS >> Sqlserver

Sådan finder du en brugers standardsprog i SQL Server (T-SQL)

I SQL Server kan du finde ud af standardsproget for en given bruger ved at forespørge på sys.server_principals systemkatalogvisning.

Denne visning indeholder en række for hver principal på serverniveau. Den indeholder information såsom rektors navn, type, oprettelse/ændringsdato, standarddatabase, standardsprog osv. En rektor er en enhed, der kan anmode om SQL Server-ressourcer.

En rektor kan være en af ​​følgende:

principper på Windows-niveau

  • Windows-domænelogin
  • Lokalt Windows-logon

SQL-server-niveau principal

  • SQL-serverlogin

Rektorer på databaseniveau

  • Databasebruger
  • Databaserolle
  • Applikationsrolle

Eksempel på returnering af standardsproget for en rektor

For at få standardsproget for en given principal kan du forespørge sys.server_principals se og brug en WHERE klausul for hovednavnet, som du er interesseret i.

Sådan:

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

Resultat:

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

Dette eksempel får standardsproget for sa rektor. Hovednavnet er unikt på en server. Dette eksempel returnerer også standarddatabasen såvel som principaltypen. I dette tilfælde er principalen et SQL Server-login.

Her er et andet eksempel med en anden bruger:

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

Resultat:

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

I dette tilfælde har login en anden standarddatabase og et andet sprog.

Du kan selvfølgelig altid bruge en stjerne til at returnere alle kolonner, hvis det kræves.

Bemærk, at ethvert login kan se deres eget loginnavn, systemlogin og de faste serverroller. For at se andre logins skal du ALTER ANY LOGIN , eller en tilladelse til login. For at se brugerdefinerede serverroller kræves ALTER ANY SERVER ROLE , eller medlemskab af rollen.

Standardsprog vs. nuværende sprog

I de fleste tilfælde vil en brugers aktuelle sprog for deres session være deres standardsprog. Men dette er ikke altid nødvendigvis tilfældet, fordi en bruger kan ændre det aktuelle sprog ved at bruge SET LANGUAGE udmelding. Dette vil ændre sproget for den aktuelle session, men deres standardsprog forbliver på, hvad det er.

For at finde ud af mere, se Sådan indstilles det aktuelle sprog i SQL Server (T-SQL) og 3 måder at få sproget for den aktuelle session i SQL Server (T-SQL).


  1. MySQL:Hvordan kopierer man rækker, men ændrer nogle få felter?

  2. Introduktion til Slowly Changing Dimensions (SCD)

  3. Sådan fungerer implicitte transaktioner i SQL Server

  4. WEEKDAY() Eksempler – MySQL