2010-01-05 3 views
2

FYI: SQL Server 2005Какие права доступа к базе данных необходимы?

У меня есть учетная запись пользователя базы данных (user_web), которая имеет возможность подключаться и запускать запросы и хранимые процедуры в моей базе данных. В частности, я дал пользователю роли db_datareader и db_datawriter, а также предоставил им разрешение на выполнение определенных хранимых процедур, которые он должен выполнить.

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

Cannot find the object "TableName" because it does not exist or you do not have permissions. 

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

ответ

2

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

http://msdn.microsoft.com/en-us/library/ms188354.aspx

+1

Он может также изучить с помощью сертификата на хранимой процедуре, хотя я думаю, что это необходимо, только если есть проблема цепочки владения (?) Если безопасность критически, хотя, одеяло db_datareader и db_datawriter вероятно, не должен Используется. –

+0

Я согласен с Томом о db_datareader и db_datawriter. Я не большой поклонник сертификатов, потому что я думаю, что это боль, особенно когда материал все еще находится в активном развитии. –

Смежные вопросы