No SSMS, se você seguir o caminho [Banco de dados] > Segurança > Esquemas e visualizar qualquer propriedade do esquema, você terá uma guia "permissões" que lista todas as permissões que cada usuário possui nesse esquema específico.
Eu gostaria de fazer uma consulta que me dê a mesma saída que essa guia. Tentei usar sys.database_principals, database_permissions e sys_objects, mas não consigo recuperar as permissões vinculadas aos esquemas.
Usando a resposta aceita de List schema permissions , isso provavelmente forneceria o que você deseja.
Além disso, se você precisar das consultas exatas à medida que o SSMS as inicia, elas não são tão legíveis e várias são usadas para obter o resultado mostrado no SSMS.
A consulta base ao abrir as permissões no meu esquema de teste:
Resultando em uma linha para cada permissão concedida
(Consultas usadas para conceder)
A segunda consulta, para cada principal, bla no meu exemplo
Resultado não muito legível
Combinando as duas consultas, você pode obter algo um pouco mais legível
Resultando em:
Com o seguinte comando consegui obter uma resposta mais correta:
A coisa é que a resposta de Scott eu acho que a ligação entre
sys.database_permissions
esys.database_principals
está incorreta. Por que aderir , umamajor_id
vez que representa o esquema e não o donatário (principal).Mas obrigado Scott !! sua resposta ajuda muito!