我使用“创建或替换行访问策略
它正在按预期工作。我的问题是,将来,如果我想获取架构中具有行访问策略的表的列表,我怎样才能得到它?
“显示表..”命令不显示该表具有行访问策略。
我刚刚遇到了同样的问题,我想我已经解决了。
查看此处的文档 - https://docs.snowflake.com/en/sql-reference/functions/policy_references.html。
您可以根据策略名称或要检查的对象名称搜索行访问策略。
在您的示例中,假设您的表名为 my_db.my_schema.my_table。要查看表上的行访问策略,只需运行:
use database my_db;
use schema information_schema;
select *
from table(information_schema.policy_references(ref_entity_name => 'my_db.my_schema.my_table', ref_entity_domain => 'table'));
jsrathnayake在评论中自我回答。这是一个很好的答案,我在这里重复一遍,以免丢失。
找到了。可以使用以下查询。从表中选择*( information_schema.policy_references(policy_name=>''));
SELECT * FROM TABLE(DATABASE_NAME.INFORMATION_SCHEMA.POLICY_REFERENCES(policy_name=>'NAME_OF_POLICY'));
确实返回应用了该策略的对象。
POLICY_DB |POLICY_SCHEMA |POLICY_NAME |POLICY_KIND |REF_DATABASE_NAME |REF_SCHEMA_NAME |REF_ENTITY_NAME |REF_ENTITY_DOMAIN|REF_COLUMN_NAME|REF_ARG_COLUMN_NAMES|TAG_DATABASE|TAG_SCHEMA|TAG_NAME|POLICY_STATUS|
----------------------+----------------------+------------------------------+-----------------+----------------------+----------------------+----------------+-----------------+---------------+--------------------+------------+----------+--------+-------------+
DATABASE_NAME |SCHEMA_NAME |NAME_OF_POLICY |ROW_ACCESS_POLICY|DATABASE_NAME |SCHEMA_NAME |OBJECT_NAME |VIEW | |[ "ARGUMENT" ] | | | |ACTIVE |