Sa, dbo, Entitätseigentümer, information_schema, sys oder Sie selbst können keine Berechtigungen erteilen, verweigern oder widerrufen

8

Ich stoße auf folgenden Fehler:

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

als ich diese Befehle ausprobierte

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

Woher weiß ich, welche Art von Berechtigungen mein Konto R2Server\AAOUserfür die Datenbank hat ASPState? und wie kann der Fehler behoben werden (damit ich diese Berechtigungen meinem Konto erteilen kann)?

Jack
quelle
Befindet sich Ihr Benutzer sysadmin auf dem Server? Oder Datenbankbesitzer auf dieser Datenbank?
Marian
Eigentlich keine. (Mein Benutzerkonto ist kein sysadminNor db owner.)
Jack
Ich glaube, ich finde heraus, dass ich db ownerMicrosoft SQL Server Management Studio verwende. Daraus kann ich schließen, dass ich mir keine Erlaubnis erteilen muss, da ich der Eigentümer der ASPStateDatenbank bin . Recht?
Jack
Du hast recht. Wenn Sie der Datenbankbesitzer sind, benötigen Sie keine weiteren Datenbankberechtigungen.
Marian
@Danke Marian, wahrscheinlich möchten Sie Ihre Antwort eingeben und angeben, welche Befehle in sqlcmd eingegeben werden sollen, damit man weiß, welche Berechtigungen er für die Datenbank hat.
Jack

Antworten:

7

Laut den Kommentaren müssen Sie keine Berechtigung für die Datenbank erteilen, wenn Sie bereits der Datenbankbesitzer dieser Datenbank sind.

Um herauszufinden, über welche spezifischen Berechtigungen Sie verfügen, können Sie die folgenden Abfragen verwenden:

  • Berechtigungen für bestimmte Datenbank finden:

    USE AdventureWorks2008R2;
    SELECT * FROM fn_my_permissions (NULL, 'DATABASE');
    GO
  • Berechtigungen auf allen Servern finden:

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

Weitere Informationen finden Sie hier: Informationen zu SQL Server-Anmeldungen und zugehörigen Serverrollen finden Sie im MSDN-Forum.

Marian
quelle
1
Für diejenigen, die nicht viel über SQL wissen, müssen Sie durch AdventureWorks2008R2Ihren eigenen Datenbanknamen ersetzen . Der fn_my_permissionsTeil ist für alle Datenbanken gleich.
SaiyanGirl