No puede otorgar, denegar o revocar permisos a sa, dbo, propietario de la entidad, information_schema, sys o usted mismo

8

Me encuentro con el siguiente error:

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

cuando estaba probando estos comandos

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

Entonces, ¿cómo sé qué tipo de permisos tiene mi cuenta R2Server\AAOUserpara la base de datos ASPState? ¿Cuáles son las formas de resolver el error (para que pueda otorgar estos permisos a mi cuenta)?

Jack
fuente
¿Está su usuario sysadmin en el servidor? ¿O dueño de la base de datos en esa base de datos?
Marian
En realidad ninguno. (mi cuenta de usuario no es un sysadminnor db owner.)
Jack
Creo que descubrí que estoy db ownerusando Microsoft SQL Server Management Studio. Por lo tanto, puedo concluir que no necesito otorgarme ningún permiso ya que soy el propietario de la ASPStatebase de datos. ¿Correcto?
Jack
Tienes razón. Si es el propietario de db, no necesita ningún otro permiso de base de datos.
Marian
@ Gracias Marian, probablemente te gustaría poner tu respuesta e incluir qué comandos escribir en sqlcmd para que sepas qué permisos tiene en la base de datos.
Jack

Respuestas:

7

Según los comentarios, si ya es el propietario de la base de datos de esa base de datos, entonces no necesita otorgar ningún permiso para la base de datos.

Ahora, para averiguar qué permisos específicos tiene, puede usar las siguientes consultas:

  • encontrar permisos en db específico:

    USE AdventureWorks2008R2;
    SELECT * FROM fn_my_permissions (NULL, 'DATABASE');
    GO
  • encontrar permisos en todo el servidor:

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

Vea otra información aquí: descubra los inicios de sesión de SQL Server y los roles de servidor asociados , en el foro de MSDN.

Mariana
fuente
1
Para aquellos que no saben mucho sobre SQL, debe reemplazarlo AdventureWorks2008R2con su propio nombre de base de datos. La fn_my_permissionsparte es la misma para todas las bases de datos.
SaiyanGirl