GRANT SELECT для Azure SQL системных таблиц - PullRequest
1 голос
/ 17 марта 2020

Есть ли возможность установить GRANT SELECT для пользователя базы данных на системные таблицы в Azure SQL?

Мне нужно запустить хранимую процедуру с выбором из системных таблиц, что-то вроде этого:

SELECT [something] 
FROM sys.dm_db_index_physical_stats (DB_ID(@dbName),NULL,NULL,NULL,NULL) AS ips
JOIN sys.indexes AS i ON (i.object_id = ips.object_id) AND (i.index_id = ips.index_id)
JOIN sys.objects AS o ON (o.object_id = ips.object_id)

К сожалению, если я пытаюсь выполнить этот SP, я получаю сообщение, что «У пользователя нет разрешения на выполнение этого действия».

Единственный способ, который я нашел для выполнения этого, - установить роль пользователя membermember к db_owner, но это довольно серьезный пробел в безопасности ...

Спасибо за вашу помощь.

1 Ответ

1 голос
/ 17 марта 2020

В Azure SQL База данных, запрашивающая динамическое представление управления c, требует разрешения VIEW DATABASE STATE. Разрешение VIEW DATABASE STATE возвращает информацию обо всех объектах в текущей базе данных. Чтобы предоставить разрешение VIEW DATABASE STATE указанному пользователю c базы данных, выполните следующий запрос:

GRANT VIEW DATABASE STATE TO database_user;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...