我正在尝试创建一个安全视图,添加到我的共享,以便读者帐户可以访问它。
示例代码如下:
USE ROLE accountadmin;
create share DEV_SHARE1;
grant usage on database dev_infomart_db to share DEV_SHARE1;
grant usage on schema dev_infomart_db.sch to share DEV_SHARE1;
ALTER SHARE DEV_SHARE1 ADD ACCOUNTS = XXXXXX;
grant reference_usage on database DEV_EDW_DB to share DEV_SHARE1;
GRANT SELECT ON VIEW dev_infomart_db.sch.view1 TO SHARE DEV_SHARE1;
这个视图dev_infomart_db.sch。
数据库DEV_EDW_DB中的表/视图我引用了snowflake的这个文档来共享来自多个db的数据。https://docs.snowflake.com/en/user-guide/data-sharing-mutiple-db.html
我遵循了上面链接中提供的步骤。我仍然得到以下错误,而分享我的观点:
SQL Error [3056] [0000]: SQL编译错误:被共享的视图或函数不能引用其他数据库中的对象。
任何帮助都将非常感激。
这通常发生在一个视图包含其他视图时,其中一些视图引用了来自另一个数据库的对象。
可以使用GET_OBJECT_REFERENCES函数列出视图使用的对象:
https://docs.snowflake.com/en/sql-reference/functions/get_object_references.html
确保它们不引用其他数据库上的对象。