Разрешения на усечение таблицы

#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:

MSDN:

Минимальное требуемое разрешение — ИЗМЕНИТЬ для table_name. Разрешения на УСЕЧЕНИЕ ТАБЛИЦЫ по умолчанию предоставляются владельцу таблицы, членам фиксированной роли сервера sysadmin, а также фиксированным ролям базы данных db_owner и db_ddladmin и не подлежат передаче.

Ответ №3:

Если вы не хотите предоставлять права (которые на самом деле являются чрезмерными и описаны в других ответах), вы можете увеличить разрешения в рамках хранимой процедуры…

 CREATE PROC DoTruncate
WITH EXECUTE AS OWNER
AS
TRUNCATE TABLE Mytable
GO
  

И разрешите это вместо этого с «обычными» правами