Não é possível conceder, negar ou revogar permissões para sa, dbo, proprietário da entidade, information_schema, sys ou você mesmo

8

Eu encontrei o seguinte erro:

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

quando eu estava tentando esses 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

Então, como sei que tipo de permissão minha conta R2Server\AAOUserpossui para o banco de dados ASPState? e quais são as maneiras de solucionar o erro (para que eu possa conceder essas permissões à minha conta)?

Jack
fonte
O seu usuário sysadmin está no servidor? Ou db proprietário nesse db?
Marian
Na verdade nenhum. (minha conta de usuário não é um sysadminnor db owner.) #
Jack
Acho que descobri que estou db ownerusando o Microsoft SQL Server Management Studio. Portanto, posso concluir que não preciso me conceder nenhuma permissão, pois sou o proprietário do ASPStatebanco de dados. direita?
Jack
Você está certo. Se você é o proprietário do banco de dados, não precisa de outras permissões de banco de dados.
Marian
@ Obrigado Marian, provavelmente você gostaria de colocar sua resposta e incluir quais comandos devem ser digitados no sqlcmd para que se saiba quais permissões ele possui no banco de dados.
Jack

Respostas:

7

Conforme os comentários, se você já é o proprietário do banco de dados desse banco de dados, não precisa conceder nenhuma permissão para o banco de dados.

Agora, para descobrir quais permissões específicas você tem, você pode usar as seguintes consultas:

  • encontre permissões em db específico:

    USE AdventureWorks2008R2;
    SELECT * FROM fn_my_permissions (NULL, 'DATABASE');
    GO
    
  • encontre permissões em todo o servidor:

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

Veja outras informações aqui: Descubra Logins do SQL Server e funções de servidor associadas , no fórum do MSDN.

Marian
fonte
11
Para aqueles que não sabem muito sobre SQL, você deve substituir AdventureWorks2008R2pelo seu próprio nome de banco de dados. A fn_my_permissionsparte é a mesma para todos os bancos de dados.
precisa saber é o seguinte