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

Come trovare la lingua predefinita di un utente in SQL Server (T-SQL)

In SQL Server puoi scoprire la lingua predefinita per un determinato utente eseguendo una query su sys.server_principals vista catalogo di sistema.

Questa vista contiene una riga per ogni entità a livello di server. Contiene informazioni come il nome, il tipo, la data di creazione/modifica dell'entità, il database predefinito, la lingua predefinita e così via. Un'entità è un'entità che può richiedere risorse di SQL Server.

Un principale potrebbe essere uno dei seguenti:

Principali a livello di Windows

  • Accesso al dominio Windows
  • Accesso locale a Windows

Principale a livello di SQL Server

  • Accesso a SQL Server

Principali a livello di database

  • Utente database
  • Ruolo del database
  • Ruolo dell'applicazione

Esempio di restituzione della lingua predefinita di un principale

Per ottenere la lingua predefinita per un determinato principal, puoi eseguire una query su sys.server_principals visualizza e usa un WHERE clausola per il nome principale che ti interessa.

In questo modo:

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

Risultato:

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

Questo esempio ottiene la lingua predefinita per sa principale. Il nome principale è univoco all'interno di un server. Questo esempio restituisce anche il database predefinito e il tipo principale. In questo caso il principale è un accesso a SQL Server.

Ecco un altro esempio che utilizza un utente diverso:

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

Risultato:

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

In questo caso, l'accesso ha un database e una lingua predefiniti diversi.

Ovviamente puoi sempre utilizzare un asterisco per restituire tutte le colonne, se necessario.

Tieni presente che qualsiasi accesso può vedere il proprio nome di accesso, gli accessi di sistema e i ruoli fissi del server. Per vedere altri accessi, richiede ALTER ANY LOGIN o un'autorizzazione per l'accesso. Per visualizzare i ruoli del server definiti dall'utente, è necessario ALTER ANY SERVER ROLE , o l'appartenenza al ruolo.

Lingua predefinita e lingua corrente

Nella maggior parte dei casi, la lingua corrente di un utente per la sua sessione sarà la lingua predefinita. Ma non è sempre così, perché un utente può cambiare la lingua corrente usando il SET LANGUAGE dichiarazione. Questo cambierà la lingua per la sessione corrente, ma la loro lingua predefinita rimarrà quella qualunque sia.

Per ulteriori informazioni, consulta Come impostare la lingua corrente in SQL Server (T-SQL) e 3 modi per ottenere la lingua della sessione corrente in SQL Server (T-SQL).