Snowflake中如何将从市场获取的共享数据库共享给读者账户?
Snowflake共享市场数据库给Reader Account的方法
你从Snowflake Marketplace获取的共享数据库(比如COVID19_EPIDEMIOLOGICAL_DATA)属于引入的共享对象,这类数据库本身是只读的,且无法直接重新共享给其他账户(包括你自己的Reader Account),所以你执行的grant usage on database COVID19_EPIDEMIOLOGICAL_DATA to share reader_acct_share;确实无效。
你的思路方向是对的,但有更高效的实现方式,无需手动同步:
步骤1:创建零拷贝克隆数据库
直接用Snowflake的零拷贝克隆功能,基于共享数据库创建可操作的克隆库,这个操作不会额外占用存储(除非后续修改数据),还能完整保留原库的结构和数据:CREATE DATABASE COVID19_CLONED CLONE COVID19_EPIDEMIOLOGICAL_DATA;步骤2:设置自动刷新(可选)
如果原Marketplace数据库会定期更新,给克隆库开启自动刷新,就能确保两者保持同步,不用手动写调度流程:-- 开启自动刷新模式 ALTER DATABASE COVID19_CLONED SET REFRESH_MODE = AUTO; -- 自定义刷新调度(示例为每天UTC零点刷新) ALTER DATABASE COVID19_CLONED SET REFRESH_SCHEDULE = 'USING CRON 0 0 * * * UTC';若不需要自动同步,也可以手动执行
ALTER DATABASE COVID19_CLONED REFRESH;来更新数据。步骤3:共享克隆库给Reader Account
现在可以正常将克隆库共享给你的Reader Account:- 创建或使用已有的共享对象:
CREATE SHARE reader_acct_share; - 授予克隆库的相关权限:
GRANT USAGE ON DATABASE COVID19_CLONED TO SHARE reader_acct_share; GRANT USAGE ON SCHEMA COVID19_CLONED.PUBLIC TO SHARE reader_acct_share; GRANT SELECT ON ALL TABLES IN SCHEMA COVID19_CLONED.PUBLIC TO SHARE reader_acct_share; GRANT SELECT ON ALL VIEWS IN SCHEMA COVID19_CLONED.PUBLIC TO SHARE reader_acct_share; - 将Reader Account添加到共享中:
ALTER SHARE reader_acct_share ADD ACCOUNT = <你的Reader Account ID>;
- 创建或使用已有的共享对象:
内容的提问来源于stack exchange,提问作者Rajib Deb
相关产品推荐
相关产品推荐

