Ogni volta che crei un nuovo account di accesso in SQL Server, puoi scegliere di assegnare una lingua predefinita a tale account di accesso. In caso contrario, l'accesso utilizzerà la lingua predefinita come specificato nell'opzione di configurazione del server della lingua predefinita.
Questo articolo illustra come impostare l'opzione di configurazione del server della lingua predefinita in SQL Server, utilizzando T-SQL.
In primo luogo, controlla le impostazioni della lingua predefinita del server
Prima di procedere e modificare qualsiasi cosa, dovremmo verificare quali sono le impostazioni correnti.
Il sp_configure
stored procedure consente di visualizzare o modificare le impostazioni di configurazione globali per il server corrente.
Per restituire tutte le opzioni di configurazione è possibile eseguire questa procedura memorizzata senza passare alcun argomento. In questo modo:
EXEC sp_configure;
Tuttavia, ciò restituisce un set di risultati piuttosto ampio.
Dato che siamo interessati solo all'impostazione della lingua predefinita, possiamo eseguire il seguente codice:
EXEC sp_configure @configname='default language';
E nel mio ambiente di test, restituisce quanto segue:
+------------------+-----------+-----------+----------------+-------------+ | name | minimum | maximum | config_value | run_value | |------------------+-----------+-----------+----------------+-------------| | default language | 0 | 9999 | 0 | 0 | +------------------+-----------+-----------+----------------+-------------+
I valori principali che ci interessano sono config_value
e run_value
. In questo caso, entrambi i valori sono 0
, che è l'ID lingua per us_english
.
Possiamo cambiarli usando il seguente codice:
EXEC sp_configure 'default language', 5; RECONFIGURE;
Risultato:
Configuration option 'default language' changed from 0 to 5. Run the RECONFIGURE statement to install.
Tieni presente che i valori per config_value
e run_value
non sono automaticamente equivalenti. Dopo aver aggiornato un'impostazione di configurazione utilizzando sp_configure
, devi aggiornare run_value
utilizzando RECONFIGURE
o RECONFIGURE WITH OVERRIDE
. Dato che l'abbiamo già fatto in questo esempio, siamo a posto.
Quindi, quando controlliamo di nuovo le impostazioni, possiamo vedere i nuovi valori:
EXEC sp_configure @configname='default language';
Risultato:
+------------------+-----------+-----------+----------------+-------------+ | name | minimum | maximum | config_value | run_value | |------------------+-----------+-----------+----------------+-------------| | default language | 0 | 9999 | 5 | 5 | +------------------+-----------+-----------+----------------+-------------+
In questo caso, abbiamo modificato i valori in 5
, che è l'ID lingua per Español
(spagnolo).
Puoi anche interrogare sys.configurations
view per restituire i valori delle opzioni di configurazione del server, se preferisci.
Come trovare l'ID lingua
Se non conosci l'ID lingua della lingua in cui devi passare, puoi eseguire sp_helplanguage
procedura memorizzata. Puoi eseguirlo senza argomenti, nel qual caso verranno restituite tutte le lingue, oppure puoi fornire un nome o un alias della lingua in modo che venga restituita solo quella lingua.
Ecco un esempio:
EXEC sp_helplanguage Spanish;
Ecco il risultato che ottengo quando lo eseguo in mssql-cli:
-[ RECORD 1 ]------------------------- langid | 5 dateformat | dmy datefirst | 1 upgrade | 0 name | Español alias | Spanish months | Enero,Febrero,Marzo,Abril,Mayo,Junio,Julio,Agosto,Septiembre,Octub shortmonths | Ene,Feb,Mar,Abr,May,Jun,Jul,Ago,Sep,Oct,Nov,Dic days | Lunes,Martes,Miércoles,Jueves,Viernes,Sábado,Domingo lcid | 3082 msglangid | 3082
E possiamo vedere che l'ID lingua per lo spagnolo è 5
. Quindi questo è il valore che forniamo durante l'esecuzione di sp_configure
per cambiare la lingua predefinita in spagnolo.
Quindi ora, quando creiamo un nuovo accesso, la sua lingua predefinita sarà lo spagnolo (a meno che non forniamo esplicitamente una lingua predefinita durante la creazione dell'accesso).
Crea un nuovo accesso – senza specificare la lingua predefinita
Quindi creiamo un nuovo login senza specificare una lingua predefinita:
CREATE LOGIN Julio WITH PASSWORD = 't35Tin9345!'
E ora controlla la lingua predefinita per quell'accesso:
SELECT default_language_name FROM master.sys.server_principals WHERE name = 'Julio';
Otteniamo il seguente risultato:
+-------------------------+ | default_language_name | |-------------------------| | Español | +-------------------------+
Poiché non è stata specificata una lingua predefinita per questo accesso, utilizza la lingua predefinita configurata a livello di server.
Crea un nuovo accesso – con una lingua predefinita
Ma se specifichiamo una lingua predefinita quando creiamo il login:
CREATE LOGIN Einstein WITH PASSWORD = 't35Tin9345!', DEFAULT_LANGUAGE = German;
E poi interroga sys.server_principals
ancora:
SELECT default_language_name FROM master.sys.server_principals WHERE name = 'Einstein';
Otteniamo il seguente risultato:
+-------------------------+ | default_language_name | |-------------------------| | German | +-------------------------+
Quindi la configurazione del server viene utilizzata solo quando non specifichi esplicitamente una lingua predefinita per l'accesso individuale.
Tieni presente che un utente può modificare la lingua in uso all'interno della propria sessione. Solo perché hanno una lingua predefinita, non significa che siano bloccati con essa. Per ulteriori informazioni, vedere 3 modi per ottenere la lingua della sessione corrente in SQL Server (T-SQL) e Come impostare la lingua corrente in SQL Server (T-SQL).