CREATE SNAPSHOT SET¶
为表、架构或数据库创建 快照 集。快照集存在后,您可随时通过运行 ALTER SNAPSHOT SET 命令向快照集添加新备份(快照)。如果您已在 快照策略 中定义计划并将该快照策略与快照集关联,Snowflake 也会自动向快照集添加快照。
每个快照集代表特定表、特定架构中对象,或特定数据库中对象的备份集合。通过这种方式,您可使备份变得非常精细或非常全面。而且,每个表、架构或数据库的备份可拥有各自独立的计划。
有关架构快照和数据库快照所包含对象类型的信息,请参阅 快照对象。
语法¶
CREATE [OR REPLACE] SNAPSHOT SET [IF NOT EXISTS] <name>
FOR [DYNAMIC] TABLE <table_name>
[ WITH SNAPSHOT POLICY <policy_name> ]
[ COMMENT = <string> ]
CREATE [OR REPLACE] SNAPSHOT SET [IF NOT EXISTS] <name>
FOR SCHEMA <schema_name>
[ WITH SNAPSHOT POLICY <policy_name> ]
[ COMMENT = <string> ]
CREATE [OR REPLACE] SNAPSHOT SET [IF NOT EXISTS] <name>
FOR DATABASE <database_name>
[ WITH SNAPSHOT POLICY <policy_name> ]
[ COMMENT = <string> ]
必填参数¶
name
快照集的标识符;对于您的账户必须是唯一的。
此外,标识符必须以字母字符开头,且不能包含空格或特殊字符,除非整个标识符字符串放在双引号内(例如,
"My object"
)。放在双引号内的标识符也区分大小写。有关更多信息,请参阅 标识符要求。
FOR [DYNAMIC] TABLE table_name
指定表或动态表的名称。在本例中,快照集代表单个表的备份。
FOR SCHEMA schema_name
指定架构的名称。在本例中,快照集代表特定架构中所有表和其他对象的备份。
FOR DATABASE database_name
指定数据库的名称。在本例中,快照集代表特定数据库中所有表、架构和其他对象的备份。
可选参数¶
OR REPLACE
如果存在同名快照集,则删除现有快照集并创建新快照集。如果因保留锁定、法律保留和过期时间等快照策略规则导致无法删除快照集,则该命令将执行失败。此子句与
IF NOT EXISTS
互斥。IF NOT EXISTS
仅当不存在同名快照集时,才会创建快照集。如果快照集已存在,则该命令将返回成功消息(即使其未产生实际效果)。此子句与
OR REPLACE
互斥。WITH SNAPSHOT POLICY policy_name
指定快照集的快照策略名称。快照策略定义了快照集的属性,包括备份计划、每个快照的保留期,以及是否防止在保留期结束前删除快照。
如果在 CREATE SNAPSHOT SET 命令中省略此参数,后续可通过 ALTER SNAPSHOT SET 命令应用策略。
重要
对快照集应用带保留锁定的快照策略是 不可逆操作。由于监管合规性所需的强保障要求,对快照集设置保留锁定后,您将无法撤销该锁定。Snowflake 支持部门也无法撤销此类保留锁定。在对具有较长有效期的快照集设置保留锁定前,请谨慎规划,以避免产生不可删除的快照集及其所含模式和数据库的意外存储费用。
如果删除了 Snowflake 组织,该组织将不再是 Snowflake 客户。此种情况下,Snowflake 会删除所有快照(包括带保留锁定的快照)。删除 Snowflake 组织需要 Snowflake 支持部门介入。管理员不可能意外执行此操作。
COMMENT = 'string_literal'
为快照集指定注释。
默认:无值
访问控制要求¶
权限 |
备注 |
---|---|
CREATE SNAPSHOT SET |
用于创建快照集的角色必须获授该权限(在创建快照集的架构上)。实际创建快照集还需要对快照集目标对象具备相应权限:表快照需要 SELECT 权限,架构快照或数据库快照需要 USAGE 权限。 |
SELECT |
为表创建快照集的角色必须对该表具有 SELECT 权限。 |
USAGE |
为架构或数据库创建快照集的角色必须对该架构或数据库具有 USAGE 权限。 |
APPLY SNAPSHOT RETENTION LOCK |
对快照集应用带保留锁定的快照策略的角色必须在账户中拥有此权限。 |
这些权限必须授予给当前活动的主角色,而不是次要角色。
有关创建具有指定权限集的自定义角色的说明,请参阅 创建自定义角色。
使用说明¶
关于元数据:
注意
客户应确保在使用 Snowflake 服务时,不会将个人数据(用户对象除外)、敏感数据、出口管制数据或其他受监管数据作为元数据输入。有关更多信息,请参阅 Snowflake 中的元数据字段。
重要
如果快照策略应用了保留锁定,并且快照集中有任何未过期的快照,则您无法删除该快照集。在这种情况下,必须等待快照集中的所有快照过期。此限制甚至适用于特权角色(如 ACCOUNTADMIN)和 Snowflake 支持部门。因此,在快照策略中指定保留锁定和较长有效期时务必谨慎。
示例¶
为表 t1
创建名为 t1_snapshots
的快照集:
CREATE SNAPSHOT SET t1_snapshots
FOR TABLE t1;
为表 t1
创建快照集 t1_snapshots
并附加快照策略:
CREATE SNAPSHOT SET t1_snapshots
FOR TABLE t1
WITH SNAPSHOT POLICY hour_snapshot_policy;
为架构 s1
创建快照集 s1_snapshots
并附加快照策略:
CREATE SNAPSHOT SET s1_snapshots
FOR SCHEMA s1
WITH SNAPSHOT POLICY hour_snapshot_policy;
为数据库 d1
创建快照集 d1_snapshots
并附加快照策略:
CREATE SNAPSHOT SET d1_snapshots
FOR DATABASE d1
WITH SNAPSHOT POLICY hour_snapshot_policy;