UNDROP SNAPSHOT¶
备注
Snowflake 的支持政策和服务级别协议 中规定的服务级别目前不包括此操作。
恢复以前移除的 块存储卷的快照。Snowflake 恢复快照后,数据就可供使用。
语法¶
UNDROP SNAPSHOT { <name> | IDENTIFIER( <id> ) }
[ RENAME TO <new_snapshot_name> ];
参数¶
name指定要恢复的快照的名称。如果指定快照名称,该命令将恢复最近删除的带有该名称的快照。
如果标识符包含空格或特殊字符,则整个字符串必须放在双引号内。放在双引号内的标识符也区分大小写。
有关更多信息,请参阅 标识符要求。
IDENTIFIER( id )为要恢复的快照指定系统生成的标识符。
如果您有多个同名的已删除快照,您可以查询 BLOCK_STORAGE_SNAPSHOTS view 以获取要恢复的已删除快照的系统生成的标识符。然后,使用 IDENTIFIER 关键字 来指定要恢复此快照。恢复的快照将保留其原始名称。
有关通过系统生成的标识符恢复快照的示例,请参阅 示例。
备注
在为笔记本、表、块存储快照、架构和数据库执行 UNDROP 命令时,只能使用系统生成的标识符和 IDENTIFIER() 关键字。
RENAME TO new_snapshot_name指定快照恢复后的名称。这允许您将快照恢复为其他名称。
访问控制要求¶
权限 |
对象 |
备注 |
|---|---|---|
OWNERSHIP |
快照 |
OWNERSHIP is a special privilege on an object that is automatically granted to the role that created the object, but can also be transferred using the GRANT OWNERSHIP command to a different role by the owning role (or any role with the MANAGE GRANTS privilege). |
要对架构中的任何对象执行操作,需要对父数据库和架构的 USAGE 权限。请注意,如果某个角色获授某个架构的任意权限,该角色便能够解析该架构。例如,若某角色被授予 CREATE 权限,则可以在该架构上创建对象,而无需 同时 被授予该架构的 USAGE 权限。
有关创建具有指定权限集的自定义角色的说明,请参阅 创建自定义角色。
使用说明¶
快照只能恢复到删除时快照所在的数据库和架构。例如,如果您在架构
s1中创建并删除快照,然后将会话中的当前架构更改为s2并尝试取消删除快照,快照将在架构s1中恢复,而不在当前架构s2中恢复。如果已存在同名快照,UNDROP SNAPSHOT 会返回错误。在这种情况下,您可以选择使用
RENAME TO参数指定其他名称。UNDROP SNAPSHOT 依赖于 Snowflake Time Travel 功能。仅当对象在 :ref:` 数据保留期 <label-time_travel_data_retention_period>` 内被删除时,才可以恢复。默认保留期为 24 小时。数据保留期过后,将无法恢复快照。
示例¶
使用名称恢复快照¶
以下示例展示如何恢复之前删除的名为 example_snapshot 的快照:
UNDROP SNAPSHOT example_snapshot;
+--------------------------------------------------+
| status |
|--------------------------------------------------|
| Snapshot EXAMPLE_SNAPSHOT successfully restored. |
+--------------------------------------------------+
使用 ID 恢复快照¶
使用 IDENTIFIER() 按 ID 恢复已删除的快照。您可以通过 BLOCK_STORAGE_SNAPSHOTS view 视图中的 snapshot_id 列来查找要恢复的特定快照的快照 ID。例如,如果您有多个名为 MY_SNAPSHOT 的已删除快照,并且要恢复倒数第二个已删除的快照 MY_SNAPSHOT,请按以下步骤操作:
在 Account Usage LOCK_STORAGE_SNAPSHOTS 视图中,找到已删除表对应的表 ID:
SELECT snapshot_id, snapshot_name, database_name, schema_name, created_on, deleted_on FROM SNOWFLAKE.ACCOUNT_USAGE.BLOCK_STORAGE_SNAPSHOTS WHERE database_name = 'TUTORIAL_DB' AND schema_name = 'DATA_SCHEMA' AND snapshot_name = 'MY_SNAPSHOT' AND deleted_on IS NOT NULL ORDER BY deleted_on;
输出示例:
+-------------+---------------+---------------+-------------+-------------------------------+-------------------------------+ | SNAPSHOT_ID | SNAPSHOT_NAME | DATABASE_NAME | SCHEMA_NAME | CREATED_ON | DELETED_ON | |-------------+---------------+---------------+-------------+-------------------------------+-------------------------------| | 1 | MY_SNAPSHOT | TUTORIAL_DB | DATA_SCHEMA | 2025-09-06 09:51:47.131 -0700 | 2025-09-15 14:21:49.683 -0700 | +-------------+---------------+---------------+-------------+-------------------------------+-------------------------------+
通过快照 ID 取消删除
MY_SNAPSHOT;要恢复倒数第二个已删除的快照,请使用上一个语句输出中的快照 ID 1。执行以下语句后,快照将以其原始名称
MY_SNAPSHOT恢复:UNDROP SNAPSHOT IDENTIFIER(1);