# 查看 SQL 执行详情

查看一条 SQL 执行记录的完整信息，用于确认语句内容、执行状态、耗时和错误信息。默认只查看当前身份执行的记录；具备相应权限时，可以查看工作区范围的记录。

```text
POST https://moi.matrixorigin.cn/newmoi/query/detail
```

## 调用前准备

准备有当前工作区访问权限的[个人访问令牌](../../../../guides/genesis/api-keys.md#创建和管理个人访问令牌)和[当前工作区 ID](../../../../guides/ai-studio/resource-center/workspace.md#复制工作区-id)。先[查看 SQL 执行记录](list-sql-execution-records.md#选择-sql-执行记录)，选择需要分析的记录并记下其语句 ID 和执行时间。

## 请求示例

以下示例读取指定语句在一分钟时间窗口内的执行详情。

```bash
curl -X POST "https://moi.matrixorigin.cn/newmoi/query/detail" \
  -H "X-API-Key: $AI_STUDIO_API_KEY" \
  -H "X-Workspace-ID: $WORKSPACE_ID" \
  -H 'Content-Type: application/json' \
  -d '{
    "statement_id": "'"$STATEMENT_ID"'",
    "start": "2026-08-26 09:44:00",
    "end": "2026-08-26 09:46:00"
  }'
```

## 请求体

| 参数 | 类型 | 是否必填 | 说明 |
| --- | --- | --- | --- |
| statement_id | string | 是 | 所选 SQL 执行记录的语句 ID。 |
| start | string | 是 | 查询开始时间，格式为 YYYY-MM-DD HH:MM:SS。 |
| end | string | 是 | 查询结束时间，格式为 YYYY-MM-DD HH:MM:SS。 |
| scope | string | 否 | 查看当前身份或当前工作区的记录。 |

### 查看范围

| scope 值 | 可查看的记录 | 权限条件 |
| --- | --- | --- |
| self | 当前身份的记录。 | 默认范围。 |
| workspace | 工作区范围的记录。 | 需要工作区审计读取权限。 |

### 指定查询时间范围

开始和结束时间必须同时填写，并覆盖所选记录的执行时间。当前接口使用不含时区的“年-月-日 时:分:秒”格式；列表显示的时间包含时区，填写前需转换为上述格式。例如，列表显示 2026-08-26T09:45:35Z 时，可使用覆盖该时刻的 2026-08-26 09:44:00 至 2026-08-26 09:46:00 时间范围。

### 使用所选执行记录

将所选记录的语句 ID 填入语句 ID 字段，并使用覆盖该记录执行时间的时间范围填写开始和结束时间字段。

## 成功响应

成功时返回 HTTP 200。范围内没有匹配记录时，data 为 null；这不表示语句执行失败。

```json
{
  "code": "OK",
  "msg": "OK",
  "data": {
    "statement_id": "5c6f22fb-ef0e-4f46-b06f-c31e1a7afb48",
    "transaction_id": "txn-01",
    "session_id": "session-01",
    "account": "acc01",
    "user": "analyst",
    "host": "127.0.0.1",
    "database": "analytics",
    "statement": "SELECT 1 AS n",
    "status": "Success",
    "query_type": "DQL",
    "statement_type": "Select",
    "sql_source_type": "cloud_user_sql",
    "request_at": "2026-08-26T09:45:35Z",
    "response_at": "2026-08-26T09:45:36Z",
    "duration": 1000000,
    "result_count": 1
  }
}
```

响应字段如下。

| 字段 | 类型 | 说明 |
| --- | --- | --- |
| code | string | 成功时为 OK。 |
| msg | string | 成功时为 OK。 |
| data | object | 匹配的执行记录；没有匹配记录时为 null。 |
| data.statement_id | string | 语句 ID。 |
| data.transaction_id | string | 事务 ID。 |
| data.session_id | string | 会话 ID。 |
| data.account | string | 执行所用账户。 |
| data.user | string | 执行用户。 |
| data.host | string | 执行主机。 |
| data.database | string | 执行时使用的数据库。 |
| data.statement | string | SQL 语句文本。 |
| data.statement_tag | string | 语句标签。 |
| data.statement_fingerprint | string | 语句指纹。 |
| data.node_uuid | string | 执行节点 UUID。 |
| data.node_type | string | 执行节点类型。 |
| data.request_at | string | 开始执行时间。 |
| data.response_at | string | 结束执行时间。 |
| data.duration | unsigned integer | 执行时长，单位为纳秒。 |
| data.status | string | 执行状态。 |
| data.error_code | string | 错误代码。 |
| data.error | string | 错误信息。 |
| data.exec_plan | string | 已保存的执行计划。 |
| data.rows_read | unsigned integer | 读取行数。 |
| data.bytes_scan | unsigned integer | 扫描字节数。 |
| data.statement_type | string | 语句类型。 |
| data.query_type | string | 语句类别。 |
| data.role_id | unsigned integer | 执行角色 ID。 |
| data.sql_source_type | string | SQL 来源类型。 |
| data.result_count | integer | 结果行数。 |
| data.cu | number | 容量使用量。 |
| data.connection_id | integer | 数据库连接 ID。 |

可选字段未记录时不会返回。

## 错误响应

错误响应使用 code、msg 和 data 包络，data 为 null。msg 为服务端返回的本地化公共错误信息，不应依赖其文本进行程序判断。

```json
{
  "code": "ErrParamInvalid",
  "msg": "请求参数无效",
  "data": null
}
```

### 常见 HTTP 错误

```{list-table}
:header-rows: 1
:widths: 12 22 32 34

* - HTTP 状态码
  - 错误代码
  - 常见原因
  - 建议操作
* - 400
  - ErrParamInvalid
  - 请求体不是合法 JSON；缺少 statement_id、start 或 end；或 scope 不是 self 或 workspace。
  - 补齐必填字段，并确认 scope 后重新提交。
* - 403
  - ErrForbidden
  - 当前身份没有读取所选范围 SQL 执行记录的权限。
  - 使用具有所需工作区读取权限的凭据，或改为默认的 self 范围。
* - 500
  - ErrServer
  - 时间范围不是 YYYY-MM-DD HH:MM:SS 格式，或服务无法完成详情查询。
  - 将 start 和 end 改为 YYYY-MM-DD HH:MM:SS 后重试；持续出现时联系支持人员。
```

## 后续操作

需要查看执行计划时，使用相同的语句 ID 和时间范围[查看 SQL 执行计划](get-sql-execution-profile.md#使用所选执行记录)。如需重新执行，确认 SQL 内容、目标数据库和当前身份权限后，使用[执行 SQL](../data-processing/sql-execution/execute-sql.md#请求体)。
