无法授予,拒绝或撤消对sa,dbo,实体所有者,information_schema,sys或您自己的权限


8

我遇到以下错误:

Cannot grant, deny, or revoke permissions to sa, dbo, entity owner, information_schema, sys, or yourself.

当我尝试这些命令时

USE ASPState
GO

GRANT EXECUTE ON CreateTempTables TO [R2Server\AAOUser]
GO
GRANT EXECUTE ON DeleteExpiredSessions TO [R2Server\AAOUser]
GO
GRANT EXECUTE ON GetMajorVersion TO [R2Server\AAOUser]
GO
GRANT EXECUTE ON GetHashCode TO [R2Server\AAOUser]
GO
GRANT EXECUTE ON TempGetAppID TO [R2Server\AAOUser]
GO
GRANT EXECUTE ON TempGetStateItem TO [R2Server\AAOUser]
GO
GRANT EXECUTE ON TempGetStateItem2 TO [R2Server\AAOUser]
GO
GRANT EXECUTE ON TempGetStateItem3 TO [R2Server\AAOUser]
GO
GRANT EXECUTE ON TempGetStateItemExclusive TO [R2Server\AAOUser]
GO
GRANT EXECUTE ON TempGetStateItemExclusive2 TO [R2Server\AAOUser]
GO
GRANT EXECUTE ON TempGetStateItemExclusive3 TO [R2Server\AAOUser]
GO
GRANT EXECUTE ON TempGetVersion TO [R2Server\AAOUser]
GO
GRANT EXECUTE ON TempInsertStateItemLong TO [R2Server\AAOUser]
GO
GRANT EXECUTE ON TempInsertStateItemShort TO [R2Server\AAOUser]
GO
GRANT EXECUTE ON TempInsertUninitializedItem TO [R2Server\AAOUser]
GO
GRANT EXECUTE ON TempReleaseStateItemExclusive TO [R2Server\AAOUser]
GO
GRANT EXECUTE ON TempRemoveStateItem TO [R2Server\AAOUser]
GO
GRANT EXECUTE ON TempResetTimeout TO [R2Server\AAOUser]
GO
GRANT EXECUTE ON TempUpdateStateItemLong TO [R2Server\AAOUser]
GO
GRANT EXECUTE ON TempUpdateStateItemLongNullShort TO [R2Server\AAOUser]
GO
GRANT EXECUTE ON TempUpdateStateItemShort TO [R2Server\AAOUser]
GO
GRANT EXECUTE ON TempUpdateStateItemShortNullLong TO [R2Server\AAOUser]
GO

因此,我如何知道我的帐户R2Server\AAOUser对数据库具有哪种类型的权限ASPState?以及解决该错误的方法是什么(以便我可以将这些权限授予我的帐户)?


您的用户sysadmin在服务器上吗?还是该数据库上的数据库所有者?
玛丽安

其实没有。(我的用户帐户不是“ sysadmin或” db owner。)
杰克

我想我发现我正在db owner使用Microsoft SQL Server Management Studio。因此,我可以得出结论,因为我是ASPState数据库的所有者,所以不需要授予自己任何权限。对?
杰克

你是对的。如果您是数据库所有者,则不需要任何其他数据库权限。
玛丽安

@谢谢玛丽安,您可能想输入答案,并在sqlcmd中输入要键入的命令,以便一个人知道他对数据库具有什么权限。
杰克

Answers:


7

根据注释,如果您已经是该数据库的数据库所有者,则无需为该数据库授予任何权限。

现在,为了找出您拥有哪些特定权限,可以使用以下查询:

  • 查找对特定数据库的权限:

    USE AdventureWorks2008R2;
    SELECT * FROM fn_my_permissions (NULL, 'DATABASE');
    GO
    
  • 在所有服务器上查找权限:

    SELECT * FROM fn_my_permissions(NULL, 'SERVER');
    GO
    

在此处查看其他信息:在MSDN论坛上查找SQL Server登录名和关联的服务器角色


1
对于那些对SQL不太了解的用户,您必须AdventureWorks2008R2用自己的数据库名称替换。fn_my_permissions对于所有数据库,该部分都是相同的。
SaiyanGirl '16
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.