Solução de problemas de controle de acesso¶
Se uma instrução SQL falhar porque a função que está sendo usada para executar a consulta não tem os privilégios de controle de acesso necessários, você pode usar a função EXPLAIN_PRIVILEGES para determinar exatamente quais privilégios estão faltando.
Solução de problemas como administrador¶
Um administrador que tem privilégios em todos os objetos no Snowflake pode chamar a função EXPLAIN_PRIVILEGES em qualquer instrução SQL.
Dica
Se você quiser que alguém sem privilégios nos objetos possa diagnosticar problemas de controle de acesso usando EXPLAIN_PRIVILEGES, conceda a essa pessoa o privilégio RESOLVE ALL ON ACCOUNT.
Exemplo: listar todos os privilégios necessários para executar uma instrução SQL
Exemplo de saída:
Essa saída indica que você precisa de um privilégio no banco de dados MYDB AND do privilégio MONITOR no esquema MYDB.MYSCHEMA.
Exemplo: listar os privilégios ausentes para uma função específica
A chamada a seguir determina se analyst_role (incluindo os privilégios das respectivas funções concedidas) tem os privilégios necessários para executar a instrução SELECT e, em caso negativo, retorna os privilégios ausentes.
Solução de problemas da própria consulta¶
Você deve ter pelo menos um privilégio nos objetos referenciados em sua consulta para chamar a função EXPLAIN_PRIVILEGES. Se esses privilégios no objeto não forem suficientes para executar sua consulta com sucesso, chame a função EXPLAIN_PRIVILEGES com o argumento missing_only definido como true para determinar os privilégios adicionais necessários.
Por exemplo, se você tem privilégios nos objetos mydb, myschema e mytable, mas ainda há falha na sua consulta devido a problemas de controle de acesso, execute o seguinte comando:
Se faltarem privilégios em sua função atual, a função retornará os privilégios específicos de que você precisa. Por exemplo: