У нас есть около 55 баз данных поставщиков, работающих в режиме совместимости с SQL Server 2000 на сервере SQL Server 2008. Включена перекрестная цепочка владения базами данных.
У нас также есть собственная база данных отчетов на этом сервере, в которой нет ничего, кроме хранимых процедур. Эти хранимые процедуры запрашивают таблицы базы данных поставщиков для целей нашей отчетности.
Все объекты поставщиков и хранимые процедуры отчетов принадлежат dbo.
(Я знаю, что это не идеальная установка. Откладывая это пока ...)
Может ли кто-нибудь сказать мне, почему я должен предоставить пользователю X права на выполнение для сохраненных процедур отчетов для пользователя X, почему я также должен предоставить пользователю X явные разрешения на выбор для затронутых таблиц базы данных поставщика (тех, которые запрашиваются сохраненными процессами)?
Я думал, что до тех пор, пока включена цепочка владения и все объекты имеют одинаковое право собственности, прав на выполнение в хранимой процедуре будет достаточно, но они не могут сказать, что пользователь X не имеет прав выбора в таблицах.
Заранее благодарю за любую помощь.
Если у вас включена цепочка владения для обеих баз данных, а пользователь, который запускает хранимую процедуру, является членом базы данных поставщика, тогда ему не нужны права на таблицы.
Исключение составляет случай, если вы используете динамический SQL, и в этом случае вам потребуется предоставить доступ к базовым таблицам, а цепочка безопасности не применяется к динамическому SQL, поскольку динамический SQL выполняется вне области выполнения исходной хранимой процедуры.