#sql #sql-server-2008
#sql #sql-server-2008
Вопрос:
Какие минимальные разрешения нам нужны для усечения таблицы? Кроме DDLAdmin. И какова наилучшая практика предоставления пользователю разрешения на усечение пользователя в SQL 2008 R2
Ответ №1:
Документация по усечению таблиц в онлайн-книгах здесь
Разрешения
Минимальное требуемое разрешение — ИЗМЕНИТЬ для table_name. Разрешения на УСЕЧЕНИЕ ТАБЛИЦЫ по умолчанию предоставляются владельцу таблицы, членам фиксированной роли сервера sysadmin, а также фиксированным ролям базы данных db_owner и db_ddladmin и не подлежат передаче. Однако вы можете включить инструкцию TRUNCATE TABLE в модуль, такой как хранимая процедура, и предоставить соответствующие разрешения модулю, используя предложение EXECUTE AS. Дополнительные сведения см. в разделе Использование EXECUTE AS для создания пользовательских наборов разрешений.
Ответ №2:
Минимальное требуемое разрешение — ИЗМЕНИТЬ для table_name. Разрешения на УСЕЧЕНИЕ ТАБЛИЦЫ по умолчанию предоставляются владельцу таблицы, членам фиксированной роли сервера sysadmin, а также фиксированным ролям базы данных db_owner и db_ddladmin и не подлежат передаче.
Ответ №3:
Если вы не хотите предоставлять права (которые на самом деле являются чрезмерными и описаны в других ответах), вы можете увеличить разрешения в рамках хранимой процедуры…
CREATE PROC DoTruncate
WITH EXECUTE AS OWNER
AS
TRUNCATE TABLE Mytable
GO
И разрешите это вместо этого с «обычными» правами