保留策略
适用于:✅Azure 数据资源管理器
保留策略控制自动从表或具体化视图中删除数据的机制。 删除持续传递到表中且相关性基于期限的数据是非常有用的。 例如,该策略可用于保存诊断事件的表,这些事件在两周后可能变得无意义。
可以为特定的表或具体化视图,或整个数据库配置保留策略。 然后,该策略将应用于数据库中所有不会替代它的表。 在数据库和表级别配置策略时,表中的保留策略优先于数据库策略。
在持续引入数据时,设置保留策略非常重要,这将限制成本。
保留策略“外部”的数据可以删除。 不保证删除操作发生的具体时间。 即使触发了保留策略,数据也可能暂时保留。
保留策略经常设置为引入后限制数据的使用期限。 有关详细信息,请参阅 SoftDeletePeriod。
注意
策略对象
保留策略包括以下属性:
- SoftDeletePeriod:
- 保证数据可查询的时间跨度。 时间段从引入数据的时间开始度量。
- 默认为
1,000 years
。 - 更改表或数据库的软删除时段时,新值将同时应用于现有数据和新数据。
- 可恢复性:
- 删除数据后的数据可恢复性(启用/禁用)。
- 默认为
Enabled
。 - 如果设置为
Enabled
,则数据可以在软删除后的 14 天内被恢复。 - 无法配置可恢复性期限。
管理命令
- 使用
.show policy retention
显示数据库、表或具体化视图的当前保留策略。 - 使用
.alter policy retention
更改数据库、表或具体化视图的当前保留策略。
默认值
默认情况下,在创建数据库或表时,不定义保留策略。 通常,将创建数据库,然后立即由其创建者根据已知要求设置其保留策略。
对尚未设置策略的数据库或表的保留策略运行 .show
命令时,Policy
显示为 null
。
可以使用以下命令应用默认的保留策略(具有上述默认值)。
.alter database DatabaseName policy retention "{}"
.alter table TableName policy retention "{}"
.alter materialized-view ViewName policy retention "{}"
该命令会将以下策略对象应用于数据库或表。
{
"SoftDeletePeriod": "365000.00:00:00", "Recoverability":"Enabled"
}
可以使用以下命令来清除数据库或表的保留策略。
.delete database DatabaseName policy retention
.delete table TableName policy retention
示例
对于具有名为 MyDatabase
且含表 MyTable1
、MyTable2
和 MySpecialTable
的数据库的环境。
软删除期为七天,禁用可恢复性
将数据库中的所有表的软删除期设置为七天,并禁用可恢复性。
选项 1(建议) :设置数据库级别的保留策略,并验证是否未设置表级别的策略。
.delete table MyTable1 policy retention // optional, only if the table previously had its policy set .delete table MyTable2 policy retention // optional, only if the table previously had its policy set .delete table MySpecialTable policy retention // optional, only if the table previously had its policy set .alter-merge database MyDatabase policy retention softdelete = 7d recoverability = disabled .alter-merge materialized-view ViewName policy retention softdelete = 7d
选项 2:为每个表设置一个表级别的保留策略,其软删除期为七天,并禁用可恢复性。
.alter-merge table MyTable1 policy retention softdelete = 7d recoverability = disabled .alter-merge table MyTable2 policy retention softdelete = 7d recoverability = disabled .alter-merge table MySpecialTable policy retention softdelete = 7d recoverability = disabled
软删除期为七天,启用可恢复性
将表
MyTable1
和MyTable2
设置为具有 7 天的软删除期,并禁用可恢复性。将表
MySpecialTable
设置为具有 14 天的软删除期,并启用可恢复性。选项 1(建议) :设置数据库级保留策略,并设置表级别的保留策略。
.delete table MyTable1 policy retention // optional, only if the table previously had its policy set .delete table MyTable2 policy retention // optional, only if the table previously had its policy set .alter-merge database MyDatabase policy retention softdelete = 7d recoverability = disabled .alter-merge table MySpecialTable policy retention softdelete = 14d recoverability = enabled
选项 2:为每个表设置一个表级别保留策略,并设置相关的软删除期和可恢复性。
.alter-merge table MyTable1 policy retention softdelete = 7d recoverability = disabled .alter-merge table MyTable2 policy retention softdelete = 7d recoverability = disabled .alter-merge table MySpecialTable policy retention softdelete = 14d recoverability = enabled
软删除期为七天,并且 MySpecialTable
无限期保留其数据
将表 MyTable1
和 MyTable2
设置为具有七天的软删除期,并且 MySpecialTable
无限期地保留其数据。
选项 1:为
MySpecialTable
设置数据库级保留策略,并设置软删除期为 1,000 年的表级保留策略(默认保留策略)。.delete table MyTable1 policy retention // optional, only if the table previously had its policy set .delete table MyTable2 policy retention // optional, only if the table previously had its policy set .alter-merge database MyDatabase policy retention softdelete = 7d .alter table MySpecialTable policy retention "{}" // this sets the default retention policy
选项 2:对于表
MyTable1
和表MyTable2
,设置表级别的保留策略,并验证MySpecialTable
的数据库级别和表级别策略未设置。.delete database MyDatabase policy retention // optional, only if the database previously had its policy set .delete table MySpecialTable policy retention // optional, only if the table previously had its policy set .alter-merge table MyTable1 policy retention softdelete = 7d .alter-merge table MyTable2 policy retention softdelete = 7d
选项 3:对于表
MyTable1
和表MyTable2
,设置表级别的保留策略。 为表MySpecialTable
设置一个软删除期为 1,000 年的表级别保留策略(默认保留策略)。.alter-merge table MyTable1 policy retention softdelete = 7d .alter-merge table MyTable2 policy retention softdelete = 7d .alter table MySpecialTable policy retention "{}"