Функції, які повертають імена і ідентифікатори користувачів

Кілька системних функцій повертають імена і ідентифікатори користувачів. Розуміння параметрів і виведення цих функцій вимагає розуміння типів імен та ідентифікаторів, які використовуються в SQL Server.

Кожен користувач, що підключається до SQL Server, має два рівні імен в SQL Server, кожне з яких зв'язується з унікальним ідентифікатором.

Імена облікових записів Microsoft Windows

Імена входу SQL Server

Вони використовуються, коли користувач при вході використовує перевірку автентичності SQL Server. Імена входу SQL Server визначаються членами визначених ролей сервера sysadmin або securityadmin за допомогою процедури, що sp_addlogin. Всі імена входу SQL Server зберігаються в таблиці master.dbo.syslogins.loginname. SQL Server формує ідентифікатор GUID, який використовується в якості ідентифікатора захисту і зберігається в таблиці sys.server_principals.sid.

SQL Server використовує поле sys.server_principals.sid як security_identifier для імені входу.

Ім'я користувача бази даних

Параметр security identifier для кожного користувача зберігається в таблиці sys.database_principals.sid; таким чином, можна пов'язати користувачів з їхніми іменами входу. Набагато простіше, якщо ім'я для бази користувача бази даних збігається з ім'ям входу SQL Server або облікового запису Windows, проте це не є обов'язковим.

При підключенні до примірника SQL Server отримати ідентифікатори або облікові записи імен входу можна наступним чином:

Функція SUSER_SNAME повертає ім'я входу SQL Server або облікового запису Windows, пов'язаної з ідентифікатором security identifier.

Функція SUSER_SNAME повертає ідентифікатор security identifier. пов'язаний з ім'ям входу SQL Server або обліковим записом Windows.

Функція SUSER_SID () (функція SUSER_SID, зазначена без параметра login_account) повертає ідентифікатор security identifier поточного з'єднання, незалежно від використовуваної перевірки автентичності SQL Server або Windows.

Функція SYSTEM_USE стандарту ISO повертає обліковий запис Windows для підключення з використанням перевірки автентичності Windows або ім'я входу SQL Server для підключення з використанням перевірки автентичності SQL Server. У Transact-SQL функція SYSTEM_USER є синонімом SUSER_SNAME () (SUSER_SNAME без аргументу security_identifier).

У SQL Server робота функцій, які здійснюють повернення імен входу або облікових записів, виконується наступним чином:

Функція SUSER_SNAME як аргумент приймає або:

Ідентифікатор security_identifier для облікового запису або групи Windows, в разі чого повертається ім'я облікового запису або групи Windows.

Або псевдоідентіфікатор security_identifier. сформований для імені входу SQL Server, в разі чого повертається ім'я входу SQL Server.

Якщо аргумент security_identifier не вказано для з'єднання, встановленого за допомогою перевірки автентичності Windows, функція SUSER_SNAME повертає ім'я облікового запису Windows, пов'язаної із з'єднанням. Якщо з'єднання встановлено за допомогою перевірки автентичності SQL Server, SUSER_SNAME повертає ім'я входу SQL Server, пов'язане з з'єднанням.

У стандарті ISO функція SYSTEM_USER реалізована у вигляді синоніма SUSER_SNAME (). (Функція SUSER_SNAME вказується без аргументу security_identifier).

Якщо з'єднання з примірником SQL Server встановлено, отримати імена і ідентифікатори користувачів можна наступним чином.

Функція USER_ID повертає ідентифікатор користувача бази даних, пов'язаний з ім'ям користувача бази даних.

Функція USER_ID () повертає ідентифікатор користувача бази даних, пов'язаний з поточним з'єднанням.

Функція USER_NAME повертає ім'я користувача бази даних, пов'язане з ідентифікатором користувача бази даних.

Функції CURRENT_USER або SESSION_USER стандарту ISO повертають ім'я користувача бази даних, пов'язане з поточним з'єднанням. У мові Transact-SQL ці функції реалізовані в вигляді функції USER_NAME (). (Функція USER_NAME вказується без аргументу database_user_ID). У мові Transact-SQL функція USER також реалізована у вигляді синоніма USER_SNAME ().

У SQL Server робота функцій, які здійснюють повернення імен входу або облікових записів, виконується наступним чином:

Функція USER_ID повертає ідентифікатор користувача, пов'язаний з вказаним ім'ям користувача бази даних. Якщо параметр database_user_name не вказано, функція USER_ID повертає ідентифікатор користувача бази даних, пов'язаний з поточним з'єднанням.

Функція USER_NAME повертає ім'я користувача бази даних, пов'язане з вказаним ідентифікатором користувача бази даних. Якщо параметр database_user_ID не вказано, функція USER_NAME повертає ім'я користувача бази даних, пов'язане з поточним з'єднанням.

CURRENT_USER, SESSION_USER, USER

Ці функції є синонімами функції USER_NAME (). (Функція USER NAME, зазначена без параметра database_user_ID).

Схожі статті