Mas*_*iti 11 sql-server permissions sql-server-2008-r2
我是一名程序员,而不是一名 dba ……我知道足够危险。
我继承了一个旧用户的数据库,该用户是该数据库的 db_owner。出于业务原因,我们无法调整此用户对现有表、模式等的权限,但正在创建一些新表,我只希望此用户对它们具有 SELECT 访问权限。
已经为这些表为该用户设置了权限,因此除了 SELECT 设置为 GRANT 之外,所有内容都被拒绝。
然而,当此用户 (dbadmin) 尝试对这些表之一 (AccountingAudit) 执行 SELECT 时,会发生此错误:
The SELECT permission was denied on the object 'AccountingAudit', database 'billing', schema 'dbo'.
Run Code Online (Sandbox Code Playgroud)
我已运行此 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
Run Code Online (Sandbox Code Playgroud)
这就是我得到的:
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
Run Code Online (Sandbox Code Playgroud)
似乎它应该正常工作?
我正在进行的 SELECT 调用是一个非常基本的 SELECT * FROM AccountingAudit,来自 SSMS。我没有做任何特殊的 sp_executesql 或类似的事情。
我试过明确授予权限:
GRANT SELECT ON [dbo].AccountingAudit TO dbadmin
Run Code Online (Sandbox Code Playgroud)
这没有效果(为什么会这样,上面的查询已经表明它已被授予!;-)
我已经通过 stackoverflow.com 和其他地方进行了搜索,但找不到我尚未尝试过的任何内容。我想知道它是否与模式的设置方式有关。(此时我对模式知之甚少。)
有任何想法吗?谢谢!
归档时间: |
|
查看次数: |
45471 次 |
最近记录: |