Eu tenho uma conta SQL sem permissões além de ter a função pública. Eu executei o seguinte comando para negar permissões para as exibições do sistema:
use master
DENY VIEW ANY DEFINITION TO public;
No entanto, quando eu consulto a visualização sys.databases
, ainda recebo os metadados retornados. Meu entendimento foi que esse não deveria ser o caso?
Isso ocorre porque
VIEW [ANY] DEFINITION
não tem nada a ver com a recuperação de resultados que são expostospublic
por padrão; isso tem a ver com a visualização da definição de objetos, por exemplo, isso não deve mais ser permitido:Tentar:
Ou, de forma mais ampla:
Observe que isso pode causar outros problemas, por exemplo, não tenho certeza do que acontecerá se o usuário tentar se conectar ao SQL Server usando o Management Studio - o Object Explorer provavelmente não carregará completamente; O IntelliSense e outros recursos também podem parar de funcionar, pois dependem do acesso a metadados.