

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Rastreo de consultas SQL con el SDK de X-Ray para .NET
<a name="xray-sdk-dotnet-sqlqueries"></a>

**nota**  
Aviso de SDK/Daemon mantenimiento de X-Ray: el 25 de febrero de 2026, el AWS X-Ray SDKs/Daemon entrará en modo de mantenimiento, donde AWS se limitarán las versiones de X-Ray SDK y Daemon para abordar únicamente los problemas de seguridad. Para obtener más información sobre la cronología del soporte, consulte [Cronología de X-Ray SDK y Daemon Support](xray-sdk-daemon-timeline.md). Recomendamos migrar a. OpenTelemetry Para obtener más información sobre la migración a OpenTelemetry, consulte [Migración de una instrumentación de rayos X a una instrumentación](https://docs.aws.amazon.com/xray/latest/devguide/xray-sdk-migration.html). OpenTelemetry 

El SDK de X-Ray para .NET proporciona una clase de encapsulamiento `System.Data.SqlClient.SqlCommand` denominada `TraceableSqlCommand` que puede utilizar en lugar de `SqlCommand`. Puede inicializar un comando SQL con la clase `TraceableSqlCommand`.

## Seguimiento de consultas SQL con métodos síncronos y asíncronos
<a name="xray-sdk-dotnot-sqlqueries-trace"></a>

Los siguientes ejemplos muestran cómo utilizar `TraceableSqlCommand` para rastrear automáticamente las consultas de SQL Server de forma síncrona y asíncrona.

**Example `Controller.cs`: instrumentación de cliente de SQL (síncrono)**  

```
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();
  }
}
```

Puede ejecutar la consulta de forma asíncrona utilizando el método `ExecuteReaderAsync`.

**Example `Controller.cs`: instrumentación de clientes de SQL (asíncronos)**  

```
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();
  }
}
```

## Recopilación de consultas SQL realizadas a SQL Server
<a name="xray-sdk-dotnot-sqlqueries-collect"></a>

Puede habilitar la captura de `SqlCommand.CommandText` como parte del subsegmento creado por la consulta SQL. `SqlCommand.CommandText` aparece como el campo `sanitized_query` en el JSON del subsegmento. De forma predeterminada, esta característica está deshabilitada por motivos de seguridad. 

**nota**  
No habilite la característica de recopilación si está incluyendo información confidencial como texto sin cifrar en sus consultas SQL.

Puede habilitar la recopilación de consultas SQL de dos formas: 
+ Establezca la propiedad `CollectSqlQueries` en `true` en la configuración global de su aplicación.
+ Establezca el parámetro `collectSqlQueries` de la instancia `TraceableSqlCommand` en `true` para recopilar llamadas dentro de la instancia.

### Habilite la propiedad global CollectSqlQueries
<a name="xray-sdk-dotnot-sqlqueries-collect-global"></a>

Los siguientes ejemplos muestran cómo habilitar la propiedad `CollectSqlQueries` para .NET y .NET Core.

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

Para establecer la propiedad `CollectSqlQueries` en `true` en la configuración global de su aplicación en .NET, modifique el `appsettings` de su archivo `Web.config` o `App.config`, tal y como se muestra.

**Example `App.config` o bien `Web.config`: habilitación global de la recopilación de consultas SQL**  

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

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

Para establecer la propiedad `CollectSqlQueries` en `true` en la configuración global de su aplicación en .NET Core, modifique el archivo `appsettings.json` en la clave de X-Ray, tal y como se muestra.

**Example `appsettings.json`: habilitación global de la recopilación de consultas SQL**  

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

------

### Habilite el collectSqlQueries parámetro
<a name="xray-sdk-dotnot-sqlqueries-collect-instance"></a>

Puede establecer el parámetro `collectSqlQueries` en la instancia `TraceableSqlCommand` en `true` para recopilar el texto de consulta SQL para las consultas de SQL Server realizadas con esa instancia. Si se establece el parámetro en `false` se deshabilita la característica `CollectSqlQuery` para la instancia `TraceableSqlCommand`. 

**nota**  
 El valor de `collectSqlQueries` en la instancia `TraceableSqlCommand` anula el valor establecido en la configuración global de la propiedad `CollectSqlQueries`.

**Example Ejemplo `Controller.cs`: habilitación de la recopilación de consultas SQL para la instancia**  

```
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();
  }
}
```