Если у меня есть набор SQL (т. Е. Сценарий, содержащий произвольные операторы SQL), есть ли способ узнать, какие минимальные разрешения требуются для выполнения SQL?
(Я имею в виду нечто похожее на область «Разрешения, необходимые для приложения» в Visual Studio при просмотре вкладки «Безопасность» на странице свойств проекта приложения WinForms.)
Немного фона:
Как часть приложения, у меня есть набор сценариев обновления (которые изменяют данные в таблицах, а также изменяют схему), которые будут запускаться в зависимости от базы данных клиента. Я хочу проанализировать эти сценарии обновления на предмет возможных проблем с разрешениями перед их развертыванием, поскольку клиент, выполняющий их, может иметь ограниченный доступ к SQL Server. Типы вещей, которые происходят в этих сценариях, обычно включают добавление / удаление / изменение таблиц / столбцов / индексов, но я также выбираю из представлений информационной схемы и системных таблиц.
РЕДАКТИРОВАТЬ:
У меня есть обработка ошибок, чтобы справиться с теми случаями, когда у пользователя нет необходимых прав для обновления. Я также в настоящее время проверяю, что пользователь, выполняющий обновление, db_owner
, но меня больше волнуют вещи вне обновляемой базы данных. Например, сценарии довольно часто используют системные таблицы для получения информации о схеме базы данных, чтобы решить, следует ли выполнять определенное действие - я хотел бы знать, какие разрешения необходимы для доступа к этим таблицам. Другой пример - включение сжатия страниц. Нужны ли пользователю специальные разрешения для этого?
Я хотел бы проверить сценарии обновления перед их развертыванием, поскольку гораздо удобнее осознавать, что вам нужны определенные разрешения заранее, а не просто при сбое обновления с ошибкой.