Какова минимальная роль SQL Server, позволяющая создавать/удалять триггеры?
-
10-07-2019 - |
Вопрос
Предварительное условие:
Существует клиент-серверное приложение, написанное на Delphi32.СУРБД — SQL Server 2005.Определенная функциональность приложения требует создания или удаления триггеров (из приложения с использованием специальных операторов DDL) в целевой базе данных.
Проблема:
Если пользователь принадлежит к роли системного администратора, нет проблем с созданием/удалением триггеров.Однако эта роль считается слишком разрешительной для пользователя приложения.
Вопросы:
- Каков стандартный минимум (т.наиболее ограничительная) роль SQL Server, которую можно использовать для создания/удаления триггеров?
- Будет ли создание собственной роли вместо использования стандартных более детальным подходом к решению этой проблемы?
Решение
Существуют различные варианты в зависимости от объема гранта (любой триггер в базе данных, любой в схеме или конкретной таблице).
Обычно разрешения, необходимые для операции SQL, описаны в справочнике по SQL.Например.для CREATE TRIGGER
на SQL 2008 см. здесь (прокрутите вниз до «Разрешения»), в данном случае:
Триггеру DML требуется разрешение ALTER для таблицы или представления, в котором должен быть создан триггер.
Вы можете создать роль, предоставляющую только те разрешения, которые вам нужны, а затем добавить к этой роли пользователей/группы, поэтому минимальная роль — это та, которую вы создаете, только с тем конкретным доступом, который вы хотите предоставить ее членам.