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

Come impostare la lingua predefinita per tutti i nuovi accessi in SQL Server (T-SQL)

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