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

Ottieni la lingua attualmente utilizzata in SQL Server

Esistono diversi modi per ottenere la lingua attualmente utilizzata in SQL Server.

La lingua della sessione corrente sarà spesso la lingua predefinita per l'accesso, ma non è necessariamente sempre così. Un utente può cambiare la lingua corrente durante la sessione.

Inoltre, alcune delle funzioni integrate di SQL Server accettano un argomento che consente di specificare una lingua per quella query specifica.

Questo articolo mostra come restituire la lingua attualmente utilizzata.

@@LINGUA

Il @@LANGUAGE la funzione di configurazione è realizzata appositamente per restituire il nome della lingua attualmente in uso.

Ecco un esempio di utilizzo.

SELECT @@LANGUAGE;

Risultato:

us_english

Questa è la lingua predefinita per il mio login.

Ecco un esempio di come cambiare la lingua durante la mia sessione, quindi eseguire @@LANGUAGE di nuovo.

SET LANGUAGE British;
SELECT @@LANGUAGE;

Risultato:

British

OPZIONI USO DBCC

DBCC USEROPTIONS ti consente anche di ottenere la lingua attualmente in uso, insieme ad alcune altre opzioni di configurazione.

DBCC USEROPTIONS;

Risultato:

+-------------------------+----------------+
 | Set Option              | Value          |
 |-------------------------+----------------|
 | textsize                | -1             |
 | language                | British        |
 | dateformat              | dmy            |
 | datefirst               | 1              |
 | lock_timeout            | 5000           |
 | quoted_identifier       | SET            |
 | arithabort              | SET            |
 | ansi_null_dflt_on       | SET            |
 | ansi_warnings           | SET            |
 | ansi_padding            | SET            |
 | ansi_nulls              | SET            |
 | concat_null_yields_null | SET            |
 | isolation level         | read committed |
 +-------------------------+----------------+  

Ho eseguito quella query immediatamente dopo l'esempio precedente e quindi restituisce ancora il britannico come lingua.

Nota inoltre che la lingua influisce implicitamente sul dateformat e datefirst valori. I valori predefiniti per quei valori quando si utilizza us_english è mdy e 7 rispettivamente.

Se cambio la lingua di nuovo in us_English ed esegui DBCC USEROPTIONS di nuovo, vedrai che il dateformat e datefirst le impostazioni tornano al formato USA.

SET LANGUAGE us_English; 
 ....... DBCC USEROPTIONS;                                                       
 Time: 0.740s
 Changed language setting to us_english.
 +-------------------------+----------------+
 | Set Option              | Value          |
 |-------------------------+----------------|
 | textsize                | -1             |
 | language                | us_english     |
 | dateformat              | mdy            |
 | datefirst               | 7              |
 | lock_timeout            | 5000           |
 | quoted_identifier       | SET            |
 | arithabort              | SET            |
 | ansi_null_dflt_on       | SET            |
 | ansi_warnings           | SET            |
 | ansi_padding            | SET            |
 | ansi_nulls              | SET            |
 | concat_null_yields_null | SET            |
 | isolation level         | read committed |
 +-------------------------+----------------+ 

Tuttavia, puoi sempre impostare il formato della data separatamente per la lingua, se necessario.

sys.dm_exec_requests

Il sys.dm_exec_requests view consente di recuperare la lingua per un processo utente specifico. In questo caso possiamo usare @@SPID per specificare il processo utente corrente.

SELECT r.language
FROM master.sys.dm_exec_requests r
WHERE r.session_id = @@SPID;

Risultato:

us_english