我在一家公司工作,一个团队管理数据库,其他团队从那里使用表/视图。有时,视图会被重构,这可能会破坏其他团队的事情。
是否可以保护某些列,以便不能简单地重命名/删除这些列?或者至少有一条日志消息告诉想要这样做的人另一个团队依赖它?
我在一家公司工作,一个团队管理数据库,其他团队从那里使用表/视图。有时,视图会被重构,这可能会破坏其他团队的事情。
是否可以保护某些列,以便不能简单地重命名/删除这些列?或者至少有一条日志消息告诉想要这样做的人另一个团队依赖它?
在 Snowflake 中,只有具有通过更改视图定义来更新视图的权限的角色用户才能对指定视图进行更改。如果特定角色具有替换视图定义的权限,则没有机制可以阻止它们重命名或删除列。
您可以在 Snowflake Information_schema 中查看 QUERY_HISTORY 函数中的日志。这些函数提供了有关哪个用户运行查询以及运行时间的大量信息。像下面这样的查询会带来适当的信息:
select user_name, role_name, query_text, start_time, end_time from table(information_schema.query_history())
where query_text ilike '%replace view %' order by start_time desc;
改变视图的特权是全部或全部。它不限制角色可以或不可以更改、删除、添加等的列。但是,由于 Snowflake 允许将视图用作另一个视图的一部分,因此这可以构成您的组织执行您所寻求的整体方法的一部分。
例如,创建一个包含所有受保护列的基本视图。严格控制对哪些角色可以更改基本视图的访问。从基本视图中,创建特权较低的角色可以更改的视图。