如何在Snowflake中查询删除/Drop表的操作人并完成根因分析
Snowflake删除表操作执行人员查询及RCA方法
短期(7天内)操作查询
直接查询当前数据库下的INFORMATION_SCHEMA.QUERY_HISTORY视图即可,无需高权限,查询语句如下:
SELECT QUERY_ID, QUERY_TEXT, USER_NAME, ROLE_NAME, START_TIME, EXECUTION_STATUS FROM INFORMATION_SCHEMA.QUERY_HISTORY WHERE QUERY_TYPE IN ('DROP_TABLE', 'DELETE') -- DELETE对应删表数据,DROP_TABLE对应删表结构 AND QUERY_TEXT ILIKE '%你的表名%' -- 替换为实际被删的表名 AND START_TIME >= DATEADD('day', -7, CURRENT_TIMESTAMP()) -- 调整为你要排查的时间范围 ORDER BY START_TIME DESC;
长期(1年内)操作查询
如果删除操作发生在7天之前,需要查询账户级的ACCOUNT_USAGE.QUERY_HISTORY视图,该视图需要ACCOUNTADMIN角色或者被授予对应访问权限才可查询,查询语句如下:
SELECT QUERY_ID, QUERY_TEXT, USER_NAME, ROLE_NAME, CLIENT_IP, CLIENT_APPLICATION, START_TIME FROM SNOWFLAKE.ACCOUNT_USAGE.QUERY_HISTORY WHERE QUERY_TYPE IN ('DROP_TABLE', 'DELETE') AND QUERY_TEXT ILIKE '%你的表名%' AND START_TIME >= DATEADD('month', -3, CURRENT_TIMESTAMP()) -- 可按需调整最长到1年内 ORDER BY START_TIME DESC;
RCA根因分析辅助查询
除了确认执行人员,你可以通过以下方式补充完整RCA信息:
- 匹配删除操作的时间点,查询
INFORMATION_SCHEMA.PIPE_HISTORY视图,确认关联Pipe的失败时间和报错信息,验证影响范围 - 查询
TABLE_HISTORY视图,查看被删表的全生命周期变更记录,确认是否有多次删除、恢复操作 - 如需验证操作来源,可以取上述查询结果中的
CLIENT_IP、CLIENT_APPLICATION字段,确认是人工操作还是自动化任务执行的删除
注意:如果查询返回空结果,优先检查当前使用的角色是否拥有对应视图的访问权限,以及表名、时间范围的过滤条件是否正确。
内容的提问来源于stack exchange,提问作者Vicky
相关产品推荐
相关产品推荐

