У меня есть две базы данных на одном и том же сервере SQL2008, и многие хранимые процедуры в одной базе данных (назовите ее A) должны иметь доступ к таблицам в другой базе данных (B).Я удостоверился, что у пользователя SQL на A есть разрешение EXEC для процедуры на A, но я также запустил DENY ALL ON mytablename
, чтобы попытаться применить меры безопасности.Хотя я где-то тупой ...
Я получаю эту ошибку при запуске myproc на A:
Поставщик Microsoft OLE DB для драйверов ODBC Ошибка '80040e09'
[Microsoft] [ODBCДрайвер SQL Server] [SQL Server] Отказано в разрешении SELECT для объекта «mytablename», базы данных «B», схемы «dbo».
Хотя я мог GRANT SELECT
получить доступ к рассматриваемым таблицам, на самом деле это не решение, не так ли ?!Мне бы хотелось, чтобы у протоколов в любой базе данных был доступ SELECT к таблицам без возможности выбора пользователем непосредственно из таблиц.
База данных A имеет:
Таблица -mytablename
Пользователь - myuserA (член db_datareader, связанный с логином с именем 'bob')
База данных B имеет:
Proc - myproc (который ВЫБРАЕТ из A ..mytablename)
Пользователь - myuserB (член db_datareader, связанный с тем же логином 'bob')
Я понимаю, что нам действительно нужен администратор базы данных, но у нас всего два сотрудника!