

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 使用适用于 Node.js 的 X-Ray 开发工具包跟踪 SQL 查询
SQL 查询

**注意**  
X-Ray SDK/Daemon 维护通知 — 2026 年 2 月 25 日， Amazon X-Ray SDKs/Daemon 将进入维护模式，在该模式下，X-Ray SDK 和 Daemon 的发布 Amazon 将仅限于解决安全问题。有关支持时间表的更多信息，请参阅 [X-Ray SDK 和 Daemon Support 时间表](xray-sdk-daemon-timeline.md)。我们建议迁移到 OpenTelemetry。有关迁移到的更多信息 OpenTelemetry，请参阅[从 X-Ray 仪器迁移到 OpenTelemetry 仪器](https://docs.amazonaws.cn/xray/latest/devguide/xray-sdk-migration.html)。

通过将 SQL 客户端包含在相应的适用于 Node.js 的 X-Ray 开发工具包客户端方法中来检测 SQL 数据库查询。
+  **PostgreSQL** – `AWSXRay.capturePostgres()` 

  ```
  var AWSXRay = require('aws-xray-sdk');
  var pg = AWSXRay.capturePostgres(require('pg'));
  var client = new pg.Client();
  ```
+  **MySQL** – `AWSXRay.captureMySQL()` 

  ```
  var AWSXRay = require('aws-xray-sdk');
  var mysql = AWSXRay.captureMySQL(require('mysql'));
  ...
  var connection = mysql.createConnection(config);
  ```

在使用检测的客户端发起 SQL 查询时，适用于 Node.js 的 X-Ray 开发工具包会在子分段中记录有关连接和查询的信息。

## 在 SQL 子段中包括其他数据


您可以向为 SQL 查询生成的子分段添加其他信息，前提是这些子分段已映射到允许列表的 SQL 字段。例如，要在子段中记录经过清理的 SQL 查询字符串，可以将其直接添加到子分段的 SQL 对象中。

**Example 将 SQL 分配给子分段**  

```
    const queryString = 'SELECT * FROM MyTable';
connection.query(queryString, ...);

// Retrieve the most recently created subsegment
const subs = AWSXRay.getSegment().subsegments;

if (subs & & subs.length > 0) {
  var sqlSub = subs[subs.length - 1];
  sqlSub.sql.sanitized_query = queryString;
}
```

请参阅 *Amazon X-Ray 开发人员指南*中的 [SQL 查询](https://docs.amazonaws.cn/xray/latest/devguide/xray-api-segmentdocuments.html#api-segmentdocuments-sql)，查看加入允许列表的 SQL 字段的完整列表。