Funções de banco de dados: não é permitido compartilhar funções de banco de dados com concessões futuras¶
Atenção
Essa mudança de comportamento está no pacote 2023_05.
Para saber o status atual do pacote, consulte Histórico do pacote.
O comportamento de concessões futuras e funções de banco de dados é o seguinte:
- Anteriormente:
Você pode conceder privilégios futuros a uma função de banco de dados e conceder a função de banco de dados a um compartilhamento. Existem dois cenários:
Conceda os privilégios à função de banco de dados e, em seguida, conceda a função de banco de dados ao compartilhamento.
GRANT SELECT ON FUTURE TABLES IN SCHEMA sh TO DATABASE ROLE dbr1; GRANT DATABASE ROLE dbr1 TO SHARE myshare;
Conceda a função de banco de dados a um compartilhamento e, em seguida, conceda os privilégios futuros à função de banco de dados.
GRANT DATABASE ROLE dbr1 TO SHARE myshare; GRANT SELECT ON FUTURE TABLES IN SCHEMA sh TO DATABASE ROLE dbr1;
É possível usar os comandos a seguir para identificar se você possui funções de banco de dados afetadas pelas alterações pendentes:
SHOW FUTURE GRANTS IN DATABASE parent_db; SHOW FUTURE GRANTS IN shared_schema;
- Atualmente:
Você não poderá conceder concessões futuras em objetos quando a função de banco de dados for concedida a um compartilhamento. Snowflake retorna uma mensagem de erro exclusiva dependendo do cenário que você tenta:
Com o cenário um, a mensagem de erro é:
Cannot share a database role with future grants to it.
Use uma instrução REVOKE <privilégios> para revogar a concessão futura da função de banco de dados. Se necessário, atualize a instrução GRANT <privilégios> para que ela não especifique concessões futuras. Por fim, conceda a função de banco de dados para o compartilhamento.
Com o cenário dois, a mensagem de erro é:
Cannot grant future grants to a database role that is granted to a share.
Modifique a instrução GRANT <privilégios> para que ela não especifique concessões futuras.
Ref: 1144