Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Как да намерите езика по подразбиране на потребителя в SQL Server (T-SQL)

В SQL Server можете да разберете езика по подразбиране за даден потребител, като потърсите sys.server_principals изглед на системния каталог.

Този изглед съдържа ред за всеки принципал на ниво сървър. Той съдържа информация като име на принципала, тип, дата на създаване/промяна, база данни по подразбиране, език по подразбиране и т.н. Принципалът е обект, който може да изисква ресурси на SQL Server.

Принципал може да бъде някое от следните:

Принципи на ниво Windows

  • Вход в домейн на Windows
  • Локално влизане в Windows

Принциал на ниво SQL сървър

  • Вход в SQL сървър

Принципи на ниво база данни

  • Потребител на базата данни
  • Роля в базата данни
  • Роля на приложение

Пример за връщане на езика по подразбиране на принципал

За да получите езика по подразбиране за даден принципал, можете да заявите sys.server_principals прегледайте и използвайте WHERE клауза за основното име, което ви интересува.

Като това:

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

Резултат:

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

Този пример получава езика по подразбиране за sa принципал. Главното име е уникално в рамките на сървъра. Този пример също връща базата данни по подразбиране, както и основния тип. В този случай принципалът е вход за SQL Server.

Ето още един пример за използване на различен потребител:

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

Резултат:

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

В този случай входът има различна база данни и език по подразбиране.

Разбира се, винаги можете да използвате звездичка, за да върнете всички колони, ако е необходимо.

Имайте предвид, че всяко влизане може да вижда собственото си име за вход, системните данни за вход и фиксираните роли на сървъра. За да видите други входове, изисква ALTER ANY LOGIN , или разрешение за влизане. За да видите дефинирани от потребителя роли на сървъра, изисква ALTER ANY SERVER ROLE , или членство в ролята.

Език по подразбиране спрямо текущ език

В повечето случаи текущият език на потребителя за неговата сесия ще бъде техният език по подразбиране. Но това не винаги е непременно така, тъй като потребителят може да промени текущия език, като използва SET LANGUAGE изявление. Това ще промени езика за текущата сесия, но техният език по подразбиране ще остане какъвто и да е.

За да научите повече, вижте Как да зададете текущия език в SQL Server (T-SQL) и 3 начина да получите езика на текущата сесия в SQL Server (T-SQL).


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server Express срещу express localdb

  2. Елементите ORDER BY трябва да се появят в списъка за избор, ако изразът съдържа оператор UNION, INTERSECT или EXCEPT (SQL Server)

  3. Отмяна с име на колона

  4. Преобразуване на SQL Server DateTime обект в BIGINT (.Net тикчета)

  5. ExecuteReader изисква отворена и налична връзка. Текущото състояние на връзката е Свързване