GRANT DATABASE ROLE … TO SHARE

Concede uma função de banco de dados a um compartilhamento. A concessão de uma função de banco de dados efetivamente acrescenta privilégios em um único banco de dados ao compartilhamento, que pode então ser compartilhada com uma ou mais contas de consumidores.

Após os consumidores criarem um banco de dados a partir do compartilhamento, eles podem conceder as funções de banco de dados compartilhado às funções em sua conta para permitir que os usuários com essas funções acessem os objetos de banco de dados no compartilhamento.

Para obter mais detalhes, consulte Introdução ao Secure Data Sharing e Como trabalhar com compartilhamentos.

Consulte também:

REVOKE DATABASE ROLE … FROM SHARE

Sintaxe

GRANT DATABASE ROLE <name>
  TO SHARE <share_name>
Copy

Parâmetros

name

Especifica o identificador (ou seja, nome) para a função do banco de dados; deve ser único no banco de dados no qual a função é criada.

O identificador deve começar com um caractere alfabético e não pode conter espaços ou caracteres especiais a menos que toda a cadeia de caracteres do identificador esteja entre aspas duplas (por exemplo, "My object"). Os identificadores delimitados por aspas duplas também diferenciam letras maiúsculas de minúsculas.

Se o identificador não estiver totalmente qualificado (na forma de db_name.database_role_name), o comando procura a função do banco de dados no banco de dados atual para a sessão.

share_name

Especifica o identificador do compartilhamento do qual a função de banco de dados especificada é concedida.

Notas de uso

  • A concessão de uma função de banco de dados a um compartilhamento falha se algum DDL ou outro privilégio restrito foi concedido à função de banco de dados. Uma função de banco de dados só pode conceder permissões para atividades somente leitura em um banco de dados e seus objetos.

  • Uma função de banco de dados compartilhada não oferece suporte a concessões futuras. Snowflake retorna a seguinte mensagem de erro dependendo da ação que você executa:

    • Conceda privilégios futuros em um objeto a uma função de banco de dados e 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;
      
      Copy
      Cannot share a database role with future grants to it.
      
    • Conceda a função de banco de dados a um compartilhamento e conceda privilégios futuros em um objeto à 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;
      
      Copy
      Cannot grant future grants to a database role that is granted to a share.
      

    Use os comandos a seguir para identificar se você tem concessões futuras associadas a uma função de banco de dados para evitar essas mensagens de erro:

    SHOW FUTURE GRANTS IN DATABASE parent_db;
    SHOW FUTURE GRANTS IN shared_schema;
    
    Copy

Exemplos

Conceda a função dr1 no banco de dados d1 para o compartilhamento share1:

GRANT DATABASE ROLE d1.dr1 TO SHARE share1;
Copy