sql >> Databasteknik >  >> RDS >> Sqlserver

Hur man hittar en användares standardspråk i SQL Server (T-SQL)

I SQL Server kan du ta reda på standardspråket för en given användare genom att fråga sys.server_principals systemkatalogvy.

Den här vyn innehåller en rad för varje principal på servernivå. Den innehåller information som huvudmannens namn, typ, skapa/ändra datum, standarddatabas, standardspråk, etc. En principal är en enhet som kan begära SQL Server-resurser.

En huvudman kan vara något av följande:

principer på Windows-nivå

  • Windows domäninloggning
  • Lokal inloggning för Windows

SQL-servernivåprincip

  • SQL-serverinloggning

Rektorer på databasnivå

  • Databasanvändare
  • Databasroll
  • Applikationsroll

Exempel på att returnera standardspråket för en huvudman

För att få standardspråket för en given principal kan du fråga sys.server_principals visa och använd en WHERE klausul för huvudnamnet som du är intresserad av.

Så här:

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              |
+-------------+-------------------------+-------------------------+

Det här exemplet får standardspråket för sa rektor. Huvudnamnet är unikt inom en server. Det här exemplet returnerar också standarddatabasen såväl som huvudtypen. I det här fallet är huvudmannen en SQL Server Login.

Här är ett annat exempel med en annan användare:

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 det här fallet har inloggningen en annan standarddatabas och ett annat språk.

Naturligtvis kan du alltid använda en asterisk för att returnera alla kolumner om det behövs.

Observera att alla inloggningar kan se sitt eget inloggningsnamn, systeminloggningarna och de fasta serverrollerna. För att se andra inloggningar krävs ALTER ANY LOGIN , eller en behörighet för inloggningen. För att se användardefinierade serverroller krävs ALTER ANY SERVER ROLE , eller medlemskap i rollen.

Standardspråk kontra aktuellt språk

I de flesta fall kommer en användares aktuella språk för sin session att vara standardspråket. Men detta är inte nödvändigtvis fallet, eftersom en användare kan ändra det aktuella språket genom att använda SET LANGUAGE påstående. Detta kommer att ändra språket för den aktuella sessionen, men deras standardspråk kommer att förbli vad det än är.

Om du vill veta mer, se Så här ställer du in det aktuella språket i SQL Server (T-SQL) och 3 sätt att få språket för den aktuella sessionen i SQL Server (T-SQL).


  1. Hur man installerar SQL Server

  2. SQL Server-replikering kräver det faktiska servernamnet för att göra en anslutning till servern

  3. Room API - Hur hämtar man nyligen infogat genererat ID för entiteten?

  4. Ställ in teckenuppsättningen och sorteringen av en tabell i MariaDB