sql >> Base de Datos >  >> RDS >> Sqlserver

Cómo establecer el idioma predeterminado para todos los inicios de sesión nuevos en SQL Server (T-SQL)

Cada vez que crea un nuevo inicio de sesión en SQL Server, tiene la opción de asignar un idioma predeterminado a ese inicio de sesión. Si no hace esto, el inicio de sesión usará el idioma predeterminado como se especifica en la opción de configuración del servidor de idioma predeterminado.

Este artículo demuestra cómo establecer la opción de configuración del servidor de idioma predeterminado en SQL Server, utilizando T-SQL.

Primero, compruebe la configuración de idioma predeterminada del servidor

Antes de seguir adelante y cambiar algo, debemos verificar cuáles son las configuraciones actuales.

El sp_configure El procedimiento almacenado le permite ver o cambiar la configuración global del servidor actual.

Para devolver todas las opciones de configuración, puede ejecutar este procedimiento almacenado sin pasar ningún argumento. Así:

EXEC sp_configure;

Sin embargo, eso devuelve un conjunto de resultados bastante grande.

Dado que solo nos interesa la configuración de idioma predeterminada, podemos ejecutar el siguiente código:

EXEC sp_configure @configname='default language';

Y en mi entorno de prueba, eso devuelve lo siguiente:

+------------------+-----------+-----------+----------------+-------------+
| name             | minimum   | maximum   | config_value   | run_value   |
|------------------+-----------+-----------+----------------+-------------|
| default language | 0         | 9999      | 0              | 0           |
+------------------+-----------+-----------+----------------+-------------+

Los principales valores que nos interesan son config_value y run_value . En este caso, ambos valores son 0 , que es el ID de idioma para us_english .

Podemos cambiarlos usando el siguiente código:

EXEC sp_configure 'default language', 5;
RECONFIGURE;

Resultado:

Configuration option 'default language' changed from 0 to 5. Run the RECONFIGURE statement to install. 

Tenga en cuenta que los valores para config_valuerun_value no son automáticamente equivalentes. Después de actualizar un parámetro de configuración mediante sp_configure , debe actualizar run_value usando RECONFIGURE o RECONFIGURE WITH OVERRIDE . Dado que ya lo hicimos en este ejemplo, estamos listos para continuar.

Entonces, cuando volvemos a verificar la configuración, podemos ver los nuevos valores:

EXEC sp_configure @configname='default language';

Resultado:

+------------------+-----------+-----------+----------------+-------------+
| name             | minimum   | maximum   | config_value   | run_value   |
|------------------+-----------+-----------+----------------+-------------|
| default language | 0         | 9999      | 5              | 5           |
+------------------+-----------+-----------+----------------+-------------+

En este caso, cambiamos los valores a 5 , que es el ID de idioma para Español (Español).

También puede consultar las sys.configurations view para devolver los valores de las opciones de configuración del servidor si lo prefiere.

Cómo encontrar el ID de idioma

Si no conoce el ID de idioma del idioma al que necesita cambiar, puede ejecutar sp_helplanguage procedimiento almacenado. Puede ejecutarlo sin argumentos, en cuyo caso se devolverán todos los idiomas, o puede proporcionar un nombre de idioma o un alias para que solo se devuelva ese idioma.

He aquí un ejemplo:

EXEC sp_helplanguage Spanish;

Aquí está el resultado que obtengo cuando ejecuto eso en 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

Y podemos ver que el identificador de idioma para español es 5 . Ese es el valor que proporcionamos al ejecutar sp_configure para cambiar el idioma predeterminado a español.

Entonces, ahora, cuando creamos un nuevo inicio de sesión, su idioma predeterminado será el español (a menos que proporcionemos explícitamente un idioma predeterminado al crear el inicio de sesión).

Crear un nuevo inicio de sesión:sin especificar el idioma predeterminado

Así que vamos a crear un nuevo inicio de sesión sin especificar un idioma predeterminado:

CREATE LOGIN Julio   
    WITH PASSWORD = 't35Tin9345!'

Y ahora verifique el idioma predeterminado para ese inicio de sesión:

SELECT default_language_name 
FROM master.sys.server_principals
WHERE name = 'Julio';

Obtenemos el siguiente resultado:

+-------------------------+
| default_language_name   |
|-------------------------|
| Español                 |
+-------------------------+

Debido a que no especificamos un idioma predeterminado para este inicio de sesión, utiliza el idioma predeterminado configurado en el nivel del servidor.

Crear un nuevo inicio de sesión:con un idioma predeterminado

Pero si especificamos un idioma predeterminado cuando creamos el inicio de sesión:

CREATE LOGIN Einstein   
    WITH PASSWORD = 't35Tin9345!',
    DEFAULT_LANGUAGE = German;

Y luego consulta sys.server_principals de nuevo:

SELECT default_language_name 
FROM master.sys.server_principals
WHERE name = 'Einstein';

Obtenemos el siguiente resultado:

+-------------------------+
| default_language_name   |
|-------------------------|
| German                  |
+-------------------------+

Por lo tanto, la configuración del servidor solo se usa cuando no especifica explícitamente un idioma predeterminado para el inicio de sesión individual.

Tenga en cuenta que un usuario puede cambiar el idioma en uso dentro de su sesión. El hecho de que tengan un idioma predeterminado no significa que se queden con él. Para obtener más información, consulte 3 formas de obtener el idioma de la sesión actual en SQL Server (T-SQL) y Cómo establecer el idioma actual en SQL Server (T-SQL).