Snowflake培训问题:创建的VEGGIES Schema未在SHOW SCHEMAS结果中显示的可选解决项
问题背景
创建了名为VEGGIES的Schema,但执行SHOW SCHEMAS命令时未显示。已知当前工作表角色拥有该Schema的访问权限,以下哪些操作可使其出现在结果中?
选项逐一分析
选项1:将默认角色更改为SYSADMIN(重新执行命令)
无效。当前角色已具备该Schema的访问权限,切换至SYSADMIN并非必要操作,无法解决Schema不显示的问题。选项2:将工作表数据库下拉菜单设置为GARDEN_PLANTS(重新执行命令)
有效。SHOW SCHEMAS默认仅展示当前上下文数据库下的Schema,若VEGGIES属于GARDEN_PLANTS数据库,切换数据库上下文后重新执行命令即可看到该Schema。选项3:将工作表仓库下拉菜单设置为VEGGIES_WH(重新执行命令)
无效。仓库是计算资源载体,与Schema的可见性无关联,切换仓库不会影响SHOW SCHEMAS的返回结果。选项4:在SHOW SCHEMAS命令中添加"all"(重新执行命令)
无效。SHOW SCHEMAS默认会展示当前数据库下所有角色有权限访问的Schema,添加ALL参数(正确语法为SHOW SCHEMAS ALL)不会扩展可见范围,无法让目标Schema显示。选项5:在SHOW SCHEMAS命令中添加"in account"(重新执行命令)
有效。默认SHOW SCHEMAS仅局限于当前数据库,加上IN ACCOUNT后会遍历整个账户内当前角色有权限访问的所有Schema,无论VEGGIES属于哪个数据库,都会被列出。选项6:在SHOW SCHEMAS命令中添加"where schema = 'VEGGIES'"(重新执行命令)
有效。即使VEGGIES不在当前数据库的默认结果中,通过WHERE子句指定Schema名称,只要该Schema存在且当前角色有权限,就会被过滤显示出来。
正确选项
- 选项2:将工作表数据库下拉菜单设置为GARDEN_PLANTS(重新执行命令)
- 选项5:在SHOW SCHEMAS命令中添加"in account"(重新执行命令)
- 选项6:在SHOW SCHEMAS命令中添加"where schema = 'VEGGIES'"(重新执行命令)
内容的提问来源于stack exchange,提问作者Marinn1225

