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