SQL Server 2008-запускает ли триггер с теми же разрешениями, что и логин / пользователь?

просто быстрый вопрос:

скажем, я положил триггер insert на таблицу в моей базе данных.

Если данные вставлены в эту таблицу через логин / пользователя "foobar".

выполняет ли триггер с теми же правами доступа / разрешениями, что и"foobar"?

большое спасибо.

2 ответов


да.

Вы можете контролировать это поведение с

EXECUTE AS

предложение инструкции create, as пояснил, что.

значение по умолчанию для триггеров -

EXECUTE AS CALLER

где нас найти

абонента

указывает, что операторы внутри модуля выполняются в контексте вызывающий модуль. Пользователь, выполняющий модуль должен иметь соответствующие разрешения не только на сам модуль, но также на любые объекты базы данных, на которые ссылается модуль. CALLER по умолчанию для всех модулей, кроме очередей, и совпадает с поведением SQL Server 2005.


по умолчанию да, но вы можете изменить это, используя

WITH EXECUTE AS

в определении триггера

http://msdn.microsoft.com/en-us/library/ms188354 (v=sql.100).aspx