Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Como encontrar o idioma padrão de um usuário no SQL Server (T-SQL)


No SQL Server, você pode descobrir o idioma padrão de um determinado usuário consultando o sys.server_principals visualização do catálogo do sistema.

Essa exibição contém uma linha para cada principal de nível de servidor. Ele contém informações como nome do principal, tipo, data de criação/modificação, banco de dados padrão, idioma padrão, etc. Um principal é uma entidade que pode solicitar recursos do SQL Server.



Um principal pode ser qualquer um dos seguintes:

Principais no nível do Windows
  • Login de domínio do Windows
  • Login local do Windows

Principal de nível do SQL Server
  • Login do SQL Server

Principais no nível do banco de dados
  • Usuário do banco de dados
  • Função do banco de dados
  • Função do aplicativo

Exemplo de retorno do idioma padrão de um principal


Para obter o idioma padrão para um determinado principal, você pode consultar o sys.server_principals ver e usar um WHERE cláusula para o nome principal em que você está interessado.

Assim:
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 exemplo obtém o idioma padrão para o sa diretor. O nome principal é exclusivo em um servidor. Este exemplo também retorna o banco de dados padrão, bem como o tipo principal. Nesse caso, o principal é um logon do SQL Server.

Aqui está outro exemplo usando um usuário 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                  |
+-------------+-------------------------+-------------------------+

Nesse caso, o logon tem um banco de dados e um idioma padrão diferentes.

Claro, você sempre pode usar um asterisco para retornar todas as colunas, se necessário.

Observe que qualquer login pode ver seu próprio nome de login, os logins do sistema e as funções de servidor fixas. Para ver outros logins, requer ALTER ANY LOGIN , ou uma permissão no login. Para ver as funções de servidor definidas pelo usuário, é necessário ALTER ANY SERVER ROLE , ou participação na função.

Idioma padrão x idioma atual


Na maioria dos casos, o idioma atual de um usuário para sua sessão será o idioma padrão. Mas isso nem sempre é necessariamente o caso, porque um usuário pode alterar o idioma atual usando o SET LANGUAGE demonstração. Isso mudará o idioma da sessão atual, mas o idioma padrão permanecerá no que for.

Para saber mais, consulte Como definir o idioma atual no SQL Server (T-SQL) e 3 maneiras de obter o idioma da sessão atual no SQL Server (T-SQL).