Impossibile concedere, negare o revocare le autorizzazioni a sa, dbo, proprietario dell'entità, information_schema, sys o te stesso


8

Riscontro il seguente errore:

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

quando stavo provando questi comandi

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

Quindi, come faccio a sapere quale tipo di autorizzazioni ha il mio account R2Server\AAOUserper il database ASPState? e quali sono i modi per risolvere l'errore (in modo da poter concedere queste autorizzazioni al mio account)?


Il tuo amministratore di sistema è sul server? O proprietario del db su quel db?
Marian,

In realtà nessuno. (il mio account utente non è un sysadminnor db owner.)
Jack

Penso di scoprire che sto db ownerutilizzando Microsoft SQL Server Management Studio. Quindi, posso concludere che non ho bisogno di concedermi alcuna autorizzazione poiché sono il proprietario del ASPStatedatabase. destra?
Jack,

Hai ragione. Se sei il proprietario del db non hai bisogno di altre autorizzazioni per il database.
Marian,

@Grazie Marian, probabilmente vorresti inserire la tua risposta e includere quali comandi digitare in sqlcmd in modo che uno sappia quali permessi ha sul database.
Jack,

Risposte:


7

Secondo i commenti, se sei già il proprietario del database di quel database, non è necessario concedere alcuna autorizzazione per il database.

Ora, per scoprire quali autorizzazioni specifiche hai, puoi utilizzare le seguenti query:

  • trova permessi su specifici db:

    USE AdventureWorks2008R2;
    SELECT * FROM fn_my_permissions (NULL, 'DATABASE');
    GO
    
  • trova le autorizzazioni su tutto il server:

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

Altre informazioni qui: Scopri gli accessi a SQL Server e i ruoli server associati , nel forum MSDN.


1
Per quelli che non sanno molto di SQL, è necessario sostituire AdventureWorks2008R2con il proprio nome di database. La fn_my_permissionsparte è la stessa per tutti i database.
SaiyanGirl,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.