如何解决SQL Server错误:15284?数据库主体已授予

时间:2017-01-23 23:59:03

标签: sql sql-server sql-server-2008

奇怪的是,服务器中不存在一个登录帐户,但它出现在数据库的用户列表中。如果我尝试删除它,则会显示错误15284。

我做了一些研究,并且确实执行了以下查询:

select * from sys.database_permissions                     
where grantor_principal_id = user_id ('ca');    

结果如下:

class   class_desc  major_id    minor_id    grantee_principal_id    grantor_principal_id    type    permission_name state   state_desc
5       ASSEMBLY    65538       0           0                       5                       AL      ALTER           G       GRANT
5       ASSEMBLY    65538       0           0                       5                       CL      CONTROL         G       GRANT
...

正如您所看到的(我希望很清楚)与此相关的对象是:65538 但是,如果我尝试获取该对象的名称:

SELECT OBJECT_NAME(65538)

返回:NULL

有谁知道什么是摆脱这些记录(sys.database_permissions)的最佳选择?

我将不胜感激任何建议。

1 个答案:

答案 0 :(得分:1)

major_id中的sys.database_permissions列根据class / class_desc进行了不同的解释。在这种情况下,它不是object_id,而是assembly_id(在sys.assemblies中找到)。