

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# X-Ray SDK for .NET
<a name="xray-sdk-dotnet-sqlqueries"></a>

**注記**  
X-Ray SDK/デーモンメンテナンス通知 – 2026 年 2 月 25 日、 AWS X-Ray SDKsデーモンはメンテナンスモードに移行します。 AWS では、X-Ray SDK とデーモンのリリースがセキュリティの問題にのみ対処するように制限されます。サポートタイムラインの詳細については、「[X-Ray SDK とデーモンのサポートタイムライン](xray-sdk-daemon-timeline.md)」を参照してください。OpenTelemetry に移行することをお勧めします。OpenTelemetry への移行の詳細については、「[X-Ray による計装から OpenTelemetry による計装への移行](https://docs.aws.amazon.com/xray/latest/devguide/xray-sdk-migration.html)」を参照してください。

X-Ray SDK for .NET は、`SqlCommand` の代わりに使用できる `TraceableSqlCommand` という名前の `System.Data.SqlClient.SqlCommand` のラッパークラスを提供します。`TraceableSqlCommand` クラスを使用して、SQL コマンドを初期化できます。

## 同期メソッドと非同期メソッドを使用した SQL クエリのトレース
<a name="xray-sdk-dotnot-sqlqueries-trace"></a>

以下の例では、`TraceableSqlCommand` を使用して自動的に SQL Server クエリを同期的および非同期的にトレースする方法を示しています。

**Example `Controller.cs` - SQL クライアント計測 (同期)**  

```
using Amazon;
using Amazon.Util;
using [Amazon.XRay.Recorder.Core](https://docs.aws.amazon.com/xray-sdk-for-dotnet/latest/reference/html/N_Amazon_XRay_Recorder_Core.htm);
using [Amazon.XRay.Recorder.Handlers.SqlServer](https://docs.aws.amazon.com/xray-sdk-for-dotnet/latest/reference/html/N_Amazon_XRay_Recorder_Handlers_SqlServer.htm);

private void QuerySql(int id)
{
  var connectionString = ConfigurationManager.AppSettings["RDS_CONNECTION_STRING"];
  using (var sqlConnection = new SqlConnection(connectionString))
  using (var sqlCommand = new TraceableSqlCommand("SELECT " + id, sqlConnection))
  {
    sqlCommand.Connection.Open();
    sqlCommand.ExecuteNonQuery();
  }
}
```

`ExecuteReaderAsync` メソッドを使用して、クエリを非同期的に実行できます。

**Example `Controller.cs` - SQL クライアント計測 (非同期)**  

```
using Amazon;
using Amazon.Util;
using [Amazon.XRay.Recorder.Core](https://docs.aws.amazon.com/xray-sdk-for-dotnet/latest/reference/html/N_Amazon_XRay_Recorder_Core.htm);
using [Amazon.XRay.Recorder.Handlers.SqlServer](https://docs.aws.amazon.com/xray-sdk-for-dotnet/latest/reference/html/N_Amazon_XRay_Recorder_Handlers_SqlServer.htm);
private void QuerySql(int id)
{
  var connectionString = ConfigurationManager.AppSettings["RDS_CONNECTION_STRING"];
  using (var sqlConnection = new SqlConnection(connectionString))
  using (var sqlCommand = new TraceableSqlCommand("SELECT " + id, sqlConnection))
  {
    await sqlCommand.ExecuteReaderAsync();
  }
}
```

## SQL Server に対して実行された SQL クエリの収集
<a name="xray-sdk-dotnot-sqlqueries-collect"></a>

SQL クエリによって作成されたサブセグメントの一部として `SqlCommand.CommandText` のキャプチャを有効にできます。`SqlCommand.CommandText` は、サブセグメント JSON のフィールド `sanitized_query` として表示されます。デフォルトでは、この機能はセキュリティのために無効になっています。

**注記**  
SQL クエリに機密情報をクリアテキストとして含める場合は、収集機能を有効にしないでください。

SQL クエリの収集を有効にするには、以下の 2 つの方法があります。
+ アプリケーションのグローバル設定で `CollectSqlQueries` プロパティを `true` に設定する。
+ インスタンス内の呼び出しを収集するには、`TraceableSqlCommand` インスタンスの `collectSqlQueries` パラメータを `true` に設定する。

### Global CollectSqlQueries プロパティを有効にする
<a name="xray-sdk-dotnot-sqlqueries-collect-global"></a>

以下の例では、.NET および .NET Core の `CollectSqlQueries` プロパティを有効にする方法を示しています。

------
#### [ .NET ]

NET のアプリケーションのグローバル設定で `CollectSqlQueries` プロパティを `true` に指定するには、ここで示しているように `App.config` または `Web.config` ファイルの `appsettings` を変更します。

**Example `App.config` または `Web.config` – SQL クエリの収集をグローバルに有効にする**  

```
<configuration>
<appSettings>
    <add key="CollectSqlQueries" value="true">
</appSettings>
</configuration>
```

------
#### [ .NET Core ]

.NET Core のアプリケーションのグローバル設定で `CollectSqlQueries` プロパティを `true` に指定するには、ここで示しているように `appsettings.json`X-Ray キーの ファイルを変更します。

**Example `appsettings.json` – SQL クエリの収集をグローバルに有効にする**  

```
{
  "XRay": {
    "CollectSqlQueries":"true"
  }
}
```

------

### collectSqlQueries パラメータを有効にする
<a name="xray-sdk-dotnot-sqlqueries-collect-instance"></a>

`TraceableSqlCommand` インスタンスの `collectSqlQueries` パラメータを `true` に設定することで、そのインスタンスを使用して実行された SQL Server クエリの SQL クエリテキストを収集できます。このパラメータを `false` に設定すると、`TraceableSqlCommand` インスタンスの `CollectSqlQuery` 機能が無効になります。

**注記**  
 `TraceableSqlCommand` インスタンスの `collectSqlQueries` の値は、`CollectSqlQueries` プロパティのグローバル設定で指定された値を上書きします。

**Example サンプル `Controller.cs` – インスタンスの SQL クエリの収集を有効にする**  

```
using Amazon;
using Amazon.Util;
using [Amazon.XRay.Recorder.Core](https://docs.aws.amazon.com/xray-sdk-for-dotnet/latest/reference/html/N_Amazon_XRay_Recorder_Core.htm);
using [Amazon.XRay.Recorder.Handlers.SqlServer](https://docs.aws.amazon.com/xray-sdk-for-dotnet/latest/reference/html/N_Amazon_XRay_Recorder_Handlers_SqlServer.htm);

private void QuerySql(int id)
{
  var connectionString = ConfigurationManager.AppSettings["RDS_CONNECTION_STRING"];
  using (var sqlConnection = new SqlConnection(connectionString))
  using (var command = new TraceableSqlCommand("SELECT " + id, sqlConnection, collectSqlQueries: true))
  {
    command.ExecuteNonQuery();
  }
}
```