.move 盘区

此命令在特定数据库的上下文中运行。 它将指定的区从源表移到目标表。

此命令需要源表和目标表的表管理员权限

注意

  • 若要详细了解区,请参阅区(数据分片)概述
  • 对于所有源盘区,.move 命令要么完成,要么失败。 不会出现部分完成或失败的结果。

限制

  • 源表和目标表都必须位于上下文数据库中。
  • 源表中的所有列均应以相同的名称和数据类型存在于目标表中。

语法

.move [async] extentsallfromtableSourceTableNametotableDestinationTableName [ with(PropertyName=PropertyValue,...)]

.move [async] extentsfromtableSourceTableNametotableDestinationTableName [ with(PropertyName=PropertyValue,...)] (GUID1 [,GUID2 ...] )

.move [async] extentstotableDestinationTableName [ with(PropertyName=PropertyValue,...) ] <| query

async(可选)。 以异步方式执行命令。

有三种方法可以指定要移动的盘区:

  • 移动特定表的所有区。
  • 在源表中显式指定区 ID。
  • 提供一个查询,其结果指定源表中的区 ID。

属性

支持以下属性。 所有属性都是可选的。

属性名称 类型 说明
setNewIngestionTime bool 如果设置为 true,则会为要移动的盘区内的所有记录分配一个新的引入时间。 当记录应由依赖于数据库游标的工作负载(例如具体化视图连续数据导出)处理时,这很有用。

使用查询指定区

.move extents to table TableName <| ...query...

使用 Kusto 查询指定区,该查询会返回一个包含名为“ExtentId”的列的记录集。

返回输出(对于同步执行)

输出参数 类型 说明
OriginalExtentId string 源表中原始盘区的唯一标识符 (GUID),该标识符已移至目标表。
ResultExtentId string 已从源表移至目标表的结果区的唯一标识符 (GUID)。 失败时 -“已失败”。
详细信息 string 包括失败详细信息(如果操作失败)。

示例

移动所有区

将表 MyTable 中的所有区都移到表 MyOtherTable

.move extents all from table MyTable to table MyOtherTable

移动两个特定区

将两个特定区(通过其区 ID)从表 MyTable 移到表 MyOtherTable

.move extents from table MyTable to table MyOtherTable (AE6CD250-BE62-4978-90F2-5CB7A10D16D7,399F9254-4751-49E3-8192-C1CA78020706)

移动特定表中的所有区

将特定表(MyTable1MyTable2)中的所有盘区移到表 MyOtherTable

.move extents to table MyOtherTable <| .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