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

Cómo encontrar el idioma predeterminado de un usuario en SQL Server (T-SQL)

En SQL Server, puede averiguar el idioma predeterminado para un usuario determinado consultando sys.server_principals vista del catálogo del sistema.

Esta vista contiene una fila para cada principal de nivel de servidor. Contiene información como el nombre del principal, tipo, fecha de creación/modificación, base de datos predeterminada, idioma predeterminado, etc. Un principal es una entidad que puede solicitar recursos de SQL Server.

Un principal podría ser cualquiera de los siguientes:

principales de nivel de Windows

  • Inicio de sesión de dominio de Windows
  • Inicio de sesión local de Windows

principal de nivel de SQL Server

  • Inicio de sesión en el servidor SQL

Directores de nivel de base de datos

  • Usuario de la base de datos
  • Rol de la base de datos
  • Rol de la aplicación

Ejemplo de devolución del idioma predeterminado de un principal

Para obtener el idioma predeterminado para un principal determinado, puede consultar sys.server_principals ver y usar un WHERE cláusula para el nombre principal que le interesa.

Así:

SELECT 
    type_desc,
    default_database_name,
    default_language_name 
FROM master.sys.server_principals
WHERE name = 'sa';

Resultado:

+-------------+-------------------------+-------------------------+
| type_desc   | default_database_name   | default_language_name   |
|-------------+-------------------------+-------------------------|
| SQL_LOGIN   | master                  | us_english              |
+-------------+-------------------------+-------------------------+

Este ejemplo obtiene el idioma predeterminado para el sa principal. El nombre principal es único dentro de un servidor. Este ejemplo también devuelve la base de datos predeterminada, así como el tipo principal. En este caso, el principal es un inicio de sesión de SQL Server.

Aquí hay otro ejemplo usando un usuario diferente:

SELECT 
    type_desc,
    default_database_name,
    default_language_name 
FROM master.sys.server_principals
WHERE name = 'Bach';

Resultado:

+-------------+-------------------------+-------------------------+
| type_desc   | default_database_name   | default_language_name   |
|-------------+-------------------------+-------------------------|
| SQL_LOGIN   | Music                   | German                  |
+-------------+-------------------------+-------------------------+

En este caso, el inicio de sesión tiene una base de datos y un idioma predeterminados diferentes.

Por supuesto, siempre puede usar un asterisco para devolver todas las columnas si es necesario.

Tenga en cuenta que cualquier inicio de sesión puede ver su propio nombre de inicio de sesión, los inicios de sesión del sistema y las funciones fijas del servidor. Para ver otros inicios de sesión, requiere ALTER ANY LOGIN , o un permiso en el inicio de sesión. Para ver las funciones de servidor definidas por el usuario, se requiere ALTER ANY SERVER ROLE o membresía en el rol.

Idioma predeterminado frente a idioma actual

En la mayoría de los casos, el idioma actual de un usuario para su sesión será su idioma predeterminado. Pero este no siempre es necesariamente el caso, porque un usuario puede cambiar el idioma actual usando el SET LANGUAGE declaración. Esto cambiará el idioma de la sesión actual, pero su idioma predeterminado seguirá siendo el que sea.

Para obtener más información, consulte Cómo establecer el idioma actual en SQL Server (T-SQL) y 3 formas de obtener el idioma de la sesión actual en SQL Server (T-SQL).