首页 > 解决方案 > SNOWFLAKE.INFORMATION_SCHEMA 不显示任何记录

问题描述

我正在尝试从帐户管理员对 SNOWFLAKE.INFORMATION_SCHEMA 进行以下查询,但它返回错误。

查询

Select 
   'databases' as category,
   count(*) as found, 
   '3' as expected
from SNOWFLAKE.INFORMATION_SCHEMA.DATABASES
where DATABASE_NAME IN ('USDA_NUTRIENT_STDREF','LIBRARY_CARD_CATALOG','SOCIAL_MEDIA_FLOODGATES')

错误

SQL 编译错误:数据库“SNOWFLAKE”不存在或未授权。

检查的 SNOWFLAKE 数据库存在,但它没有任何架构,包括 INFORMATION_SCHEMA

标签: snowflake-cloud-data-platform

解决方案


数据库位于您的帐户下。Account 是 Snowflake 对象层次结构中的顶级对象。数据库在帐户下。查看此链接,并找到其中显示“最顶层的容器是客户帐户...”的文本。那里有一个漂亮的小图形。

当您在 Snowflake 数据库上查询 information_schema 时,您将获得的只是雪花数据库的 information_schema,而不是您的整个帐户。Snowflake.information_schema 有点无用 b/c 它只显示您无法控制的数据库(Snowflake)的信息模式 - Snowflake 控制它。

如果要查看帐户中的所有数据库,可以执行以下操作:

use role accountadmin;
show databases;
select count(*) from table(result_scan(last_query_id())) where "name" in ('USDA_NUTRIENT_STDREF','LIBRARY_CARD_CATALOG','SOCIAL_MEDIA_FLOODGATES');

现在,另外,如果您担心遇到的错误 - 您无权访问雪花数据库,那么我会说您要么没有使用 accountadmin 角色,要么没有使用具有正确权限的角色。如果您想为 Snowlfake 数据库授予角色权限,可以运行以下命令:

GRANT IMPORTED PRIVILEGES
    ON DATABASE SNOWFLAKE TO ROLE {SOME_ROLE_OF_YOURS};

祝你好运!


推荐阅读