У нас есть промежуточный сервер, на котором мы проводим окончательные приемочные испытания перед запуском. Это копия Live, в которой разработчики имеют не больше привилегий, чем обычные пользователи. Я пытаюсь предоставить разработчикам права доступа только для чтения к данным и объектам на этом сервере, чтобы они могли исследовать ошибки.
Я поместил их в роль, которая является членом db_datareader, который предоставляет им данные и схему таблиц, но они не могут видеть, что находится в представлениях, хранимых процессах и функциях, и поэтому они продолжают приходить ко мне, чтобы узнать. Я не могу добавить их в db_ddladmin, потому что это позволило бы им изменять объекты, и я не вижу других фиксированных ролей сервера или базы данных, которые выглядят правильно.
Я действительно должен предоставлять им ОПРЕДЕЛЕНИЕ ПРОСМОТРА для каждого рассматриваемого объекта или есть более чистый способ?
Вы можете предоставить разрешение «Просмотр определения» на уровне схемы. Самый простой способ - создать новую роль в вашей промежуточной базе данных (скажем, «dev_datareader»). Затем выполните следующее, заменив имя схемы на «dbo», если оно другое:
GRANT SELECT, VIEW DEFINITION ON SCHEMA::[dbo] TO [dev_datareader]
Вот полный SQL (с созданием пользователя)
CREATE LOGIN dev_datareader
WITH PASSWORD = '340$Uuxwp7Mcxo7Khy';
GO
CREATE USER dev_datareaderFOR LOGIN dev_datareader;
GO
GRANT SELECT, VIEW DEFINITION ON SCHEMA::[dbo] TO dev_datareader