Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Контекст выполнения / 8 сообщений из 8, страница 1 из 1
31.08.2020, 11:45
    #39994037
Алексаша
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Контекст выполнения
Здравствуйте!

Ms sql 2017

Код: sql
1.
2.
execute as user = 'dbo'
  select database_principal_id(), user_name()


1dbo
Код: sql
1.
  select * from sys.syslogins


одна запись sa
Код: sql
1.
revert


Код: sql
1.
  select database_principal_id(), user_name()


1dbo
Код: sql
1.
  select * from sys.syslogins


перечень всех логинов

как я понимаю в обоих случаях одинаковый контекст выполнения к sys.syslogins, но почему там где явно указано возвращается только одна строка
...
Рейтинг: 0 / 0
31.08.2020, 12:13
    #39994066
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Контекст выполнения
Алексаша,

у меня все отображает.
...
Рейтинг: 0 / 0
31.08.2020, 12:14
    #39994067
felix_ff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Контекст выполнения
Алексаша,

потому что у вас база "закрыта" trustworthy = 0 и вы выполняете execute as USER
...
Рейтинг: 0 / 0
31.08.2020, 12:15
    #39994069
invm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Контекст выполнения
Алексаша
как я понимаю в обоих случаях одинаковый контекст выполнения к sys.syslogins
Это если database owner = system_user
Измените запрос на
Код: sql
1.
select database_principal_id(), user_name(), system_user
...
Рейтинг: 0 / 0
31.08.2020, 12:19
    #39994073
Сон Веры Павловны
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Контекст выполнения
Алексаша
как я понимаю в обоих случаях одинаковый контекст выполнения к sys.syslogins

Нет, не одинаковый. В первом случае контекст - роль БД, которая вовсе не факт, что обладает всеми полномочиями для просмотра объектов уровня сервера. Во втором - это контекст текущего пользователя, который (скорее всего) sa. Если выполнять запрос не к syslogins (которая deprecated), а к sys.server_principals, то в первом случае будут выведены все стандартные серверные роли+sa (он всегда мапится на dbo), что вполне соответствует документации :
Any login can see their own login name, the system logins, and the fixed server roles. To see other logins, requires ALTER ANY LOGIN, or a permission on the login.
А вот запрос
Код: sql
1.
2.
3.
execute as user='dbo'
select * from sys.database_principals;
revert;


вполне выводит всех пользователей в базе. Ну, и плюс - вышеуказанный запрос, выполненный в базе master, таки выведет все логины. Подозреваю, ввиду того, что физически логины хранятся в системных таблицах именно базы master.
...
Рейтинг: 0 / 0
31.08.2020, 12:24
    #39994076
felix_ff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Контекст выполнения
Сон Веры Павловны,

вполне выводит всех пользователей в базе. Ну, и плюс - вышеуказанный запрос, выполненный в базе master, таки выведет все логины. Подозреваю, ввиду того, что физически логины хранятся в системных таблицах именно базы master.


не выведет.

database_principals показывает объекты уровня бд, применительно к базе мастер он покажет юзеров отмапленных в нее, но не логины

server_principals в контексте любой бд будет показывать логины сервера.
...
Рейтинг: 0 / 0
31.08.2020, 12:29
    #39994082
Сон Веры Павловны
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Контекст выполнения
felix_ff
не выведет

Под "вышеуказанным" подразумевался запрос топикстартера.
...
Рейтинг: 0 / 0
31.08.2020, 13:30
    #39994105
Алексаша
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Контекст выполнения
felix_ff,

Спасибо! Верно указали!. Я просто после переподсоединения БД такой не ожидаемый результат заметил сделал
Код: sql
1.
alter database set trustworthy on
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Контекст выполнения / 8 сообщений из 8, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]