You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Snowflake共享跨库视图报3056错误问题咨询

问题排查与解决方案

核心报错原因

  • 你创建的dev_infomart_db.sch.view1是普通视图,不是安全视图。Snowflake要求跨数据库引用的共享视图必须是SECURE 安全视图,普通视图不支持跨库共享,哪怕授予了REFERENCE_USAGE权限也会触发3056报错。
  • 权限授予顺序不符合要求,必须先给共享授予被引用数据库的REFERENCE_USAGE权限,再授予视图的SELECT权限,顺序颠倒也会触发校验失败。
  • 若视图定义中未使用完全限定名引用DEV_EDW_DB的对象,也可能触发跨库引用识别异常。

修复步骤

  1. 重新创建视图,添加SECURE关键字:
USE ROLE accountadmin;
CREATE OR REPLACE SECURE VIEW dev_infomart_db.sch.view1 
AS
-- 替换为你原来的视图逻辑,注意所有DEV_EDW_DB的对象都用完全限定名:DEV_EDW_DB.<schema名>.<表/视图名>
SELECT * FROM DEV_EDW_DB.xxx.xxx;
  1. 按正确顺序重新授予共享权限:
-- 1. 授予被引用库的REFERENCE_USAGE
GRANT REFERENCE_USAGE ON DATABASE DEV_EDW_DB TO SHARE DEV_SHARE1;
-- 2. 授予视图所在库、schema的USAGE
GRANT USAGE ON DATABASE dev_infomart_db TO SHARE DEV_SHARE1;
GRANT USAGE ON SCHEMA dev_infomart_db.sch TO SHARE DEV_SHARE1;
-- 3. 最后授予安全视图的SELECT权限
GRANT SELECT ON VIEW dev_infomart_db.sch.view1 TO SHARE DEV_SHARE1;

额外校验点

  • 确认DEV_EDW_DB和dev_infomart_db属于同一个Snowflake提供者账号,跨账号的数据库引用不支持数据共享。
  • 确认视图定义中没有引用其他未授予REFERENCE_USAGE权限的数据库对象,若有多个跨库引用,需要给所有涉及的数据库都授予REFERENCE_USAGE到对应共享。

内容的提问来源于stack exchange,提问作者Rahul Kumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 11:57:00