Impossible d'accorder, de refuser ou de révoquer des autorisations à sa, dbo, propriétaire d'entité, schéma_information, sys ou vous-même

8

Je rencontre l'erreur suivante:

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

quand j'essayais ces commandes

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

Alors, comment savoir quel type d'autorisations mon compte R2Server\AAOUserpossède pour la base de données ASPState? et quels sont les moyens de résoudre l'erreur (afin que je puisse accorder ces autorisations à mon compte)?

Jack
la source
Votre utilisateur est-il administrateur système sur le serveur? Ou propriétaire db sur ce db?
Marian
En fait, aucun. (mon compte utilisateur n'est pas un sysadminnor db owner.)
Jack
Je pense que je découvre que j'utilise db ownerMicrosoft SQL Server Management Studio. Je peux donc conclure que je n'ai pas besoin de m'accorder de permission puisque je suis le propriétaire de la ASPStatebase de données. droite?
Jack
Tu as raison. Si vous êtes le propriétaire de la base de données, vous n'avez besoin d'aucune autre autorisation de base de données.
Marian
@Merci Marian, vous voudriez probablement mettre votre réponse et inclure les commandes à taper dans sqlcmd afin que l'on sache quelles autorisations il a sur la base de données.
Jack

Réponses:

7

Selon les commentaires, si vous êtes déjà le propriétaire de la base de données de cette base de données, vous n'avez pas besoin d'accorder d'autorisation pour la base de données.

Maintenant, afin de savoir quelles autorisations spécifiques vous avez, vous pouvez utiliser les requêtes suivantes:

  • trouver des autorisations sur une base de données spécifique:

    USE AdventureWorks2008R2;
    SELECT * FROM fn_my_permissions (NULL, 'DATABASE');
    GO
  • trouver des autorisations sur tout le serveur:

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

Voir d'autres informations ici: Découvrez les connexions SQL Server et les rôles de serveur associés , sur le forum MSDN.

Marian
la source
1
Pour ceux qui ne connaissent pas grand-chose à SQL, vous devez remplacer AdventureWorks2008R2par votre propre nom de base de données. La fn_my_permissionspartie est la même pour toutes les bases de données.
SaiyanGirl