Есть ли способ запретить удаление разрешений для набора таблиц для конкретного пользователя в sql server 2008. Я хочу, чтобы пользователь не мог удалять данные из некоторых таблиц в базе данных, не хочу использовать вместо триггера для конкретной причины таблицы у меня 90 столов ??
Можем ли мы запретить удаление из определенных таблиц?
- Проверьте здесь: stackoverflow.com/questions/2988741/ 30.11.2012
Ответы:
Абсолютно!
DENY DELETE ON (YourTableNameHere) TO YourUserNameHere
Дополнительные сведения см. в замечательных и обширных документах MSDN Books Online!
Если вы хотите запретить разрешение DELETE
для всех таблиц в базе данных, вы можете использовать:
DENY DELETE TO YourUserNameHere
Или, если вы структурировали свою базу данных таким образом, что таблицы сгруппированы в схемы, вы также можете запретить пользователю доступ к определенной схеме.
Если вы не сгруппировали свои 90 таблиц в отдельную схему (или две, три схемы), то не существует простого волшебного способа применить разрешение сразу к 90 таблицам. Это либо все таблицы, либо конкретная схема, либо конкретный объект базы данных (например, таблица) для каждого оператора DENY
.
Обновление: вы всегда можете использовать представления системного каталога для создания этих DENY
операторов, а затем использовать те, которые вам нужны:
SELECT
'DENY DELETE ON ' + t.NAME + ' TO (youruser)'
FROM sys.tables t
Это выведет в качестве вывода (например, в SQL Server Management Studio) список операторов для отказа в разрешении DELETE
от вашего пользователя. Скопируйте эти строки в текстовый редактор и удалите те строки, которые вам не нужны, и вот вам длинный список DENY
утверждений!
DENY
для всех таблиц, для определенной схемы или конкретной таблицы. Вы не можете сделать это по-другому. 30.11.2012DENY DELETE ON (schemaname) TO (username)
для тех схем (по одной за раз), от которых вы хотите запретить своему пользователю 30.11.2012