У меня есть 2 базы данных, назовем их Database1 и Database2, пользователь с очень ограниченными правами, назовем его User1, и хранимая процедура в Database1, назовем ее Proc1.
Я даю разрешение EXECUTE
пользователю User1 на Proc1; GRANT EXECUTE ON [dbo].[Proc1] TO [User1]
и все работало нормально, пока все таблицы, на которые ссылаются (для SELECT, UPDATE... и т. д.), находятся в Database1, хотя User1 не имеет явных разрешений на эти таблицы. столы.
Я изменил Proc1 на SELECT из таблицы, назовем ее Table1, в Database2. Теперь, когда я выполняю Proc1, я получаю следующую ошибку: Разрешение SELECT было отклонено для объекта «Таблица1», база данных «База данных2», схема «dbo».
Насколько я понимаю, SQL Server позаботится о необходимых разрешениях, когда я предоставлю EXECUTE хранимой процедуре; это работает по-другому, когда таблица (или объект) находится в другой базе данных?
Примечания:
- Пользователь 1 — это пользователь в обеих базах данных с одинаковыми ограниченными разрешениями.
- Я использую SQL Server 2005