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