powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Контекст выполнения
8 сообщений из 8, страница 1 из 1
Контекст выполнения
    #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
Контекст выполнения
    #39994066
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексаша,

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

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

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


не выведет.

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

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

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

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


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