Я программист, а не дба ... Я знаю достаточно, чтобы быть опасным.
Я унаследовал базу данных от старого пользователя, который является db_owner для базы данных. Мы не можем настроить разрешение этого пользователя для существующих таблиц, схем и т. Д. По деловым причинам, но создаются некоторые новые таблицы, и я только хочу, чтобы этот пользователь имел к ним доступ SELECT.
Для этих пользователей были установлены разрешения для этих таблиц, так что все ОТКАЗАНО, кроме SELECT, для которого установлено значение GRANT.
Тем не менее, когда этот пользователь (dbadmin) пытается выполнить SELECT для одной из этих таблиц (AccountingAudit), возникает эта ошибка:
The SELECT permission was denied on the object 'AccountingAudit', database 'billing', schema 'dbo'.
Я запустил этот SQL, чтобы попытаться увидеть, какие разрешения установлены для этой таблицы / пользователя:
select object_name(major_id) as object,
user_name(grantee_principal_id) as grantee,
user_name(grantor_principal_id) as grantor,
permission_name,
state_desc
from sys.database_permissions
И вот что я получаю обратно:
AccountingAudit dbadmin dbo ALTER DENY
AccountingAudit dbadmin dbo CONTROL DENY
AccountingAudit dbadmin dbo DELETE DENY
AccountingAudit dbadmin dbo INSERT DENY
AccountingAudit dbadmin dbo REFERENCES DENY
AccountingAudit dbadmin dbo SELECT GRANT
AccountingAudit dbadmin dbo TAKE OWNERSHIP DENY
AccountingAudit dbadmin dbo UPDATE DENY
AccountingAudit dbadmin dbo VIEW DEFINITION DENY
AccountingAudit dbadmin dbo VIEW CHANGE TRACKING DENY
Похоже, это должно работать правильно?
Вызов SELECT, который я делаю, является очень простым SELECT * FROM AccountingAudit изнутри SSMS. Я не делаю никаких специальных sp_executesql или что-то в этом роде.
Я пытался явно предоставить разрешение:
GRANT SELECT ON [dbo].AccountingAudit TO dbadmin
Это не имеет никакого эффекта (почему бы, запрос выше уже показывает, что это предоставлено! ;-)
Я искал на stackoverflow.com и в других местах, и не могу найти ничего, что я еще не пробовал. Мне интересно, связано ли это с тем, как настроены схемы. (На данный момент я очень мало знаю о схемах.)
Есть идеи? Спасибо!