Назад | Перейти на главную страницу

Предоставление разрешений объектам, вызываемым в хранимых процедурах

У нас есть около 55 баз данных поставщиков, работающих в режиме совместимости с SQL Server 2000 на сервере SQL Server 2008. Включена перекрестная цепочка владения базами данных.

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

Все объекты поставщиков и хранимые процедуры отчетов принадлежат dbo.

(Я знаю, что это не идеальная установка. Откладывая это пока ...)

Может ли кто-нибудь сказать мне, почему я должен предоставить пользователю X права на выполнение для сохраненных процедур отчетов для пользователя X, почему я также должен предоставить пользователю X явные разрешения на выбор для затронутых таблиц базы данных поставщика (тех, которые запрашиваются сохраненными процессами)?

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

Заранее благодарю за любую помощь.

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

Исключение составляет случай, если вы используете динамический SQL, и в этом случае вам потребуется предоставить доступ к базовым таблицам, а цепочка безопасности не применяется к динамическому SQL, поскольку динамический SQL выполняется вне области выполнения исходной хранимой процедуры.