Отказано в разрешении на выполнение SQL Server 2016

#sql-server #sql-server-2016

#sql-сервер #sql-server-2016

Вопрос:

Я запускаю SQL Server 2016 и настроил доступ на основе ролей, чтобы контролировать, что пользователи могут делать на основе ролей.

Я настроил роль:

 Create Role [Developer]
  

Я предоставил разрешения этой роли для запуска SELECTS, покупки, запрета ВСТАВКИ, ОБНОВЛЕНИЯ и УДАЛЕНИЯ во всех таблицах:

 GRANT SELECT ON SCHEMA::dbo to [Developer]
DENY INSERT, UPDATE, DELETE ON SCHEMA::dbo to [Developer]
  

Я добавляю пользователей в роль:

 ALTER ROLE [Developer] ADD MEMBER [SomeUser]
  

Я хочу, чтобы пользователь выполнял только определенные хранимые процедуры, поэтому я предоставляю роли разрешения на выполнение определенных sprocs:

 GRANT EXECUTE ON dbo.mySproc to [Developer]
  

Однако, когда я вхожу в систему как SomeUser и пытаюсь выполнить sproc, я получаю следующую ошибку:

Разрешение на выполнение было отклонено для объекта ‘mySproc’, базы данных ‘MyDB’, схемы ‘dbo’.

Я делаю что-то не так?

Комментарии:

1. вы сопоставили логин с пользователем базы данных? dba.stackexchange.com/questions/96358 /…

2. Я сопоставил логин, используя следующее: СОЗДАЙТЕ ПОЛЬЗОВАТЕЛЯ [myDomain SomeUser] ДЛЯ ВХОДА [myDomain SomeUser] С DEFAULT_SCHEMA [dbo]. Это не устранило проблему.

3. Я устранил проблему, удалив всех пользователей из роли и удалив роль и воссоздав роль и добавив обратно пользователей из роли. Я думаю, что, возможно, я добавил ЗАПРЕТ на выполнение в схему dbo в первый раз. Однако я не видел этого отказа при просмотре разрешений роли.

4. вам нужно «выбрать объекты типа» -> «база данных», чтобы увидеть разрешения, установленные на уровне базы данных. это не отображается автоматически в результатах поиска, как разрешения на уровне объекта.

5. Теперь я это вижу. Спасибо.