You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何设置DATA_RETENTION_TIME_IN_DAYS=0的表执行UNDROP仍可恢复?

问题解答

现象性质

该行为是Snowflake的预期正常行为,不属于功能异常。

核心原因

出现该现象的本质是两个独立的保留周期规则被混淆了:

  • DATA_RETENTION_TIME_IN_DAYS参数控制的是Time Travel(时间回溯)功能的保留时长:仅用于表正常存在时,查询表的历史数据版本、恢复误修改/误删除的行数据,设置为0仅代表关闭了表运行期间的历史数据回溯能力,无法使用AT | BEFORE语法查询历史快照,和表删除后的恢复能力完全无关。
  • UNDROP命令依赖的是已删除对象的回收站保留周期:所有执行普通DROP操作的对象(表、模式、数据库),无论其自身的Time Travel保留期设置为多少,都会先进入回收站留存:
    • Snowflake标准版账号回收站保留期固定为1天
    • 企业版及以上账号可配置最长90天的回收站保留期
      只有当对象在回收站的保留期到期被永久清理,或者删除时主动加了PURGE参数跳过回收站,才会无法通过UNDROP恢复。

验证方法

你可以通过以下测试验证上述逻辑:

create or replace table t1 (col1 string) DATA_RETENTION_TIME_IN_DAYS=0;
insert into t1 values ('abc');
drop table t1 purge; -- 加PURGE参数直接永久删除,不进入回收站
undrop table t1; -- 此时会报错:Table T1 does not exist or was purged

内容的提问来源于stack exchange,提问作者Cristian Scutaru

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 03:15:04