.move extents 命令
适用于:✅Azure 数据资源管理器
此命令在特定数据库的上下文中运行。 它将指定的区从源表移到目标表。
注意
- 若要详细了解区,请参阅区(数据分片)概述。
- 对于所有源盘区,
.move
命令要么完成,要么失败。 不会出现部分完成或失败的结果。
权限
对于源表和目标表,你必须至少具有表管理员权限。
限制
- 源表和目标表都必须位于上下文数据库中。
- 源表中的所有列均应以相同的名称和数据类型存在于目标表中。
- 如果目标表是具体化视图的源表,则命令可能会失败,因为具体化视图不会处理移动盘区中的记录。 在具体化视图限制页中查看更多详细信息。 可以通过在移动命令期间设置新的引入时间来解决此错误。 请参阅支持的属性中的
setNewIngestionTime
。
语法
移动所有区:
.move
[async
] extents
all
from
table
sourceTableName to
table
DestinationTableName [ with
(
PropertyName =
PropertyValue [,
...])
]
移动 ID 指定的区:
.move
[async
] extents
from
table
SourceTableName to
table
DestinationTableName [ with
(
PropertyName =
PropertyValue [,
...])
] (
GUID [,
...] )
移动查询结果指定的区:
.move
[async
] extents
to
table
DestinationTableName [ with
(
PropertyName =
PropertyValue [,
...])
] <|
Query
详细了解语法约定。
参数
客户 | 类型 | 必需 | 说明 |
---|---|---|---|
async |
string |
如果指定此参数,命令将以异步方式运行。 | |
SourceTableName | string |
✔️ | 包含要移动的区的表的名称。 |
DestinationTableName | string |
✔️ | 要将区移动到其中的表的名称。 |
PropertyName、PropertyValue | string |
一个或多个支持的属性。 | |
查询 | string |
✔️ | 此 Kusto 查询语言 (KQL) 查询的结果指定源表以及要从中移动的盘区 ID。 应返回一个具有“ExtentId”和“TableName”列的记录集。 |
支持的属性
属性名称 | 类型 | 必需 | 说明 |
---|---|---|---|
setNewIngestionTime |
bool |
如果设置为 true ,则会为要移动的区内的所有记录分配一个新的引入时间。 当记录应由依赖于数据库游标的工作负荷(例如具体化视图和连续数据导出)处理时,这很有用。 |
|
extentCreatedOnFrom |
datetime |
✔️ | 应用于在此时间点之后创建的区。 |
extentCreatedOnTo |
datetime |
✔️ | 应用于在此时间点之前创建的区。 |
注意
为了提高性能,请将 extentCreatedOnFrom
和 extentCreatedOnTo
参数设置为尽可能小的范围。
返回
同步运行此命令时,将返回具有以下架构的表。
输出参数 | 类型 | 说明 |
---|---|---|
OriginalExtentId | string |
源表中原始盘区的唯一标识符 (GUID),该标识符已移至目标表。 |
ResultExtentId | string |
已从源表移至目标表的结果区的唯一标识符 (GUID)。 失败时 -“已失败”。 |
详细信息 | string |
包括失败详细信息(如果操作失败)。 |
异步运行此命令时,将返回操作 ID (GUID)。 使用 .show operations 命令监视操作的状态,使用 .show operation details 命令检索成功的执行的结果。
示例
移动所有区
将表 MyTable
中的所有区都移到表 MyOtherTable
:
.move extents all from table MyTable to table MyOtherTable
在指定的创建时间范围内移动两个特定盘区
在指定的创建时间范围内将两个特定盘区(通过其盘区 ID)从表 MyTable
移到表 MyOtherTable
:
.move extents from table MyTable to table MyOtherTable with (extentCreatedOnFrom=datetime(2023-03-10), extentCreatedOnTo=datetime(2023-03-12)) (AE6CD250-BE62-4978-90F2-5CB7A10D16D7,399F9254-4751-49E3-8192-C1CA78020706)
从特定表移动指定创建时间范围内的所有盘区
将指定创建时间范围内的所有盘区从特定表(MyTable1
、MyTable2
)移到表 MyOtherTable
:
.move extents to table MyOtherTable with (extentCreatedOnFrom=datetime(2023-03-10), extentCreatedOnTo=datetime(2023-03-12)) <| .show tables (MyTable1,MyTable2) extents
移动所有带设置的新引入时间的盘区
.move extents all from table MyTable to table MyOtherTable with (setNewIngestionTime=true)
示例输出
OriginalExtentId | ResultExtentId | 详细信息 |
---|---|---|
e133f050-a1e2-4dad-8552-1f5cf47cab69 | 0d96ab2d-9dd2-4d2c-a45e-b24c65aa6687 | |
cdbeb35b-87ea-499f-b545-defbae091b57 | a90a303c-8a14-4207-8f35-d8ea94ca45be | |
4fcb4598-9a31-4614-903c-0c67c286da8c | 97aafea1-59ff-4312-b06b-08f42187872f | |
2dfdef64-62a3-4950-a130-96b5b1083b5a | 0fb7f3da-5e28-4f09-a000-e62eb41592df |