Сила ВСТАВЛЯЕТ только с помощью хранимой процедуры

Используя SQL Server 2008, там способ позволить, вставляет в таблицу только с помощью хранимой процедуры, и раз так как?

Править:
Лучшим способом пойти является, вероятно, предложение Martin Smith для использования INSTEAD OF, ВСТАВЛЯЮТ триггер. Прямой ответ на этот вопрос является marc_s' один с ПРЕДОСТАВЛЕНИЕМ, и ОТКЛОНИТЕ, хотя это не ограничит некоторые учетные записи пользователей.

10
задан Asaf R 28 March 2010 в 17:08
поделиться

4 ответа

Просто не предоставляйте никому из пользователей базы данных (и вашей «публичной» роли) разрешение INSERT для таблицы.

Предоставьте этим пользователям разрешение на выполнение хранимой процедуры INSERT - таким образом они смогут вызывать хранимую процедуру, но не могут напрямую вставлять какие-либо данные в базовую таблицу.

DENY INSERT ON dbo.YourTable TO PUBLIC
GRANT EXECUTE ON dbo.InsertDataProc TO PUBLIC
9
ответ дан 3 December 2019 в 18:32
поделиться

Что побуждает задать вопрос? Это потому, что хранимая процедура содержит определенную логику, которая, как вы полагаете, выполняется всякий раз, когда вставляются данные? В таком случае вы можете использовать триггер для инкапсуляции этой логики.

Если это не подходит и вы хотите, чтобы даже люди с разрешениями системного администратора не могли вставлять данные в таблицу напрямую, вы не можете, но вы можете убедиться, что это не произойдет случайно, используя INSTEAD OF INSERT триггер, который вызывает ошибку и откатывается, если не задано определенное значение CONTEXT_INFO , затем очищает CONTEXT_INFO (ваша хранимая процедура может установить это значение на ожидаемое)

http://msdn.microsoft.com/en-us/library/aa214382%28SQL.80%29.aspx

4
ответ дан 3 December 2019 в 18:32
поделиться

Использование разрешений (грантов). Создайте SP и предоставьте право выполнить соответствующему пользователю или роли. Затем откажитесь от вставки прямо в таблицу, и все будет готово.

2
ответ дан 3 December 2019 в 18:32
поделиться

Запретите INSERT разрешение на таблицу и предоставьте разрешение EXECUTE на хранимую процедуру.

6
ответ дан 3 December 2019 в 18:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: