GRANT <privilégio> … TO SHARE¶
Concede a um compartilhamento privilégios de acesso a bancos de dados e outros objetos de banco de dados compatíveis (esquemas, UDFs, tabelas e exibições). A concessão de privilégios nesses objetos efetivamente adicione os objetos ao compartilhamento, que podem então ser compartilhados com uma ou mais contas de consumidores.
Para obter mais detalhes, consulte Introdução ao Secure Data Sharing e Como trabalhar com compartilhamentos.
- Consulte também:
Sintaxe¶
GRANT objectPrivilege ON
{ DATABASE <name>
| SCHEMA <name>
| FUNCTION <name>
| { TABLE <name> | ALL TABLES IN SCHEMA <schema_name> }
| VIEW <name> }
TO SHARE <share_name>
Onde:
objectPrivilege ::= -- For DATABASE, SCHEMA, or FUNCTION USAGE -- For TABLE or VIEW SELECT -- For DATABASE REFERENCE_USAGECopy
Parâmetros¶
name
Especifica o identificador do objeto (banco de dados, esquema, UDF, tabela ou exibição segura) para o qual o privilégio especificado é concedido.
schema_name
Especifica o identificador do esquema para o qual o privilégio especificado é concedido para todas as tabelas.
share_name
Especifica o identificador do compartilhamento do qual o privilégio especificado é concedido.
Notas de uso¶
O privilégio USAGE em um único banco de dados pode ser concedido a um compartilhamento; entretanto, dentro desse banco de dados, privilégios em múltiplos esquemas, UDFs, tabelas e exibições podem ser concedidos ao compartilhamento.
Os privilégios sobre objetos individuais devem ser concedidos a um compartilhamento em instruções GRANT separadas. A única exceção é o privilégio SELECT em tabelas. Usando uma cláusula
ALL
, você pode conceder SELECT em todas as tabelas em um esquema especificado para um compartilhamento.O privilégio SELECT em exibições só pode ser concedido em exibições seguras. Tentativa de conceder o privilégio SELECT de uma exibição não segura a um compartilhamento retorna um erro.
O privilégio USAGE só pode ser concedido em UDFs seguros. Tentativa de conceder o privilégio USAGE em um UDF não seguro para um compartilhamento retorna um erro.
Atualmente, compartilhar um UDF que faz referência a um objeto de outro banco de dados não é suportado. Por exemplo, se você tentar conceder USAGE em um UDF que faz referência a uma exibição segura de outro banco de dados, um erro é retornado.
Use o privilégio REFERENCE_USAGE ao compartilhar uma exibição segura que faz referência a objetos pertencentes a múltiplos bancos de dados, como a seguir:
O privilégio REFERENCE_USAGE deve ser concedido individualmente a cada banco de dados.
O privilégio REFERENCE_USAGE deve ser concedido a um banco de dados antes de conceder SELECT em uma exibição segura a um compartilhamento.
Secure Data Sharing: provedores de dados não podem adicionar novos objetos a um compartilhamento automaticamente usando concessões futuras. Ou seja, provedores de dados não podem conceder privilégios sobre objetos futuros a um compartilhamento usando instruções GRANT <privilege> … TO SHARE.
Exemplos¶
Este é um exemplo de compartilhamento de objetos de um único banco de dados:
GRANT USAGE ON DATABASE mydb TO SHARE share1; GRANT USAGE ON SCHEMA mydb.public TO SHARE share1; GRANT USAGE ON FUNCTION mydb.shared_schema.function1 TO SHARE share1; GRANT USAGE ON FUNCTION mydb.shared_schema.function2 TO SHARE share1; GRANT SELECT ON ALL TABLES IN SCHEMA mydb.public TO SHARE share1; GRANT USAGE ON SCHEMA mydb.shared_schema TO SHARE share1; GRANT SELECT ON VIEW mydb.shared_schema.view1 TO SHARE share1; GRANT SELECT ON VIEW mydb.shared_schema.view3 TO SHARE share1;Copy
Este é um exemplo de compartilhamento de uma exibição segura que faz referência a objetos de um banco de dados diferente:
CREATE SECURE VIEW view2 AS SELECT * FROM database2.public.sampletable; GRANT USAGE ON DATABASE database1 TO SHARE share1; GRANT USAGE ON SCHEMA database1.schema1 TO SHARE share1; GRANT REFERENCE_USAGE ON DATABASE database2 TO SHARE share1; GRANT SELECT ON VIEW view2 TO SHARE share1;Copy