

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Tracciamento delle query SQL con X-Ray SDK for .NET
<a name="xray-sdk-dotnet-sqlqueries"></a>

**Nota**  
Avviso di SDK/Daemon manutenzione a raggi X: il 25 febbraio 2026, X-Ray SDKs/Daemon entrerà in modalità di manutenzione, in cui AWS limiterà le versioni di AWS X-Ray SDK e Daemon per risolvere solo problemi di sicurezza. Per ulteriori informazioni sulla tempistica del supporto, consulta. [Cronologia di X-Ray SDK e Daemon Support](xray-sdk-daemon-timeline.md) Ti consigliamo di migrare a. OpenTelemetry Per ulteriori informazioni sulla migrazione a OpenTelemetry, vedere [Migrazione dalla strumentazione a raggi X](https://docs.aws.amazon.com/xray/latest/devguide/xray-sdk-migration.html) alla strumentazione. OpenTelemetry 

L'X-Ray SDK for .NET fornisce una classe wrapper`System.Data.SqlClient.SqlCommand`, denominata`TraceableSqlCommand`, che è possibile utilizzare al posto di. `SqlCommand` Puoi inizializzare un comando SQL con la classe `TraceableSqlCommand`.

## Tracciamento di query SQL con metodi sincroni e asincroni
<a name="xray-sdk-dotnot-sqlqueries-trace"></a>

I seguenti esempi mostrano come utilizzare `TraceableSqlCommand` per tracciare automaticamente query SQL Server in modo sincrono e asincrono.

**Example `Controller.cs` - Analisi client SQL (sincrono)**  

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

Puoi eseguire la query in modo asincrono utilizzando il metodo `ExecuteReaderAsync`.

**Example `Controller.cs` - Analisi client SQL (Asincrono)**  

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

## Raccolta di query SQL effettuate su SQL Server
<a name="xray-sdk-dotnot-sqlqueries-collect"></a>

Puoi abilitare l'acquisizione di `SqlCommand.CommandText` come parte del sottosegmento creato dalla query SQL. `SqlCommand.CommandText` viene visualizzato come il campo `sanitized_query` nel sottosegmento JSON. Per impostazione predefinita, questa caratteristica è disabilitata per motivi di sicurezza. 

**Nota**  
Non abilitare la caratteristica di raccolta se si includono informazioni sensibili come testo in chiaro nelle query SQL.

Puoi abilitare la raccolta di query SQL in due modi: 
+ Imposta la proprietà `CollectSqlQueries` su `true` nella configurazione globale dell'applicazione.
+ Imposta il parametro `collectSqlQueries` nell'istanza `TraceableSqlCommand` su `true` per raccogliere le chiamate all'interno dell'istanza.

### Abilita la proprietà globale CollectSqlQueries
<a name="xray-sdk-dotnot-sqlqueries-collect-global"></a>

I seguenti esempi mostrano come abilitare la proprietà `CollectSqlQueries` per .NET e .NET Core.

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

Per impostare la proprietà `CollectSqlQueries` su `true` nella configurazione globale dell'applicazione in .NET, modifica la `appsettings` del file `Web.config` o `App.config`, come mostrato.

**Example `App.config`Oppure`Web.config`: abilita la raccolta di query SQL a livello globale**  

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

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

Per impostare la `CollectSqlQueries` proprietà su `true` nella configurazione globale dell'applicazione in.NET Core, modifica il `appsettings.json` file con la chiave X-Ray, come illustrato.

**Example `appsettings.json`— Abilita la raccolta di query SQL a livello globale**  

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

------

### Abilita il collectSqlQueries parametro
<a name="xray-sdk-dotnot-sqlqueries-collect-instance"></a>

Puoi impostare il parametro `collectSqlQueries` nell'istanza `TraceableSqlCommand` su per `true` per raccogliere il testo della query SQL per le query SQL Server eseguite utilizzando tale istanza. L'impostazione del parametro su `false` disabilita la caratteristica `CollectSqlQuery` per l'istanza `TraceableSqlCommand`. 

**Nota**  
 Il valore di `collectSqlQueries` nell'istanza `TraceableSqlCommand` sostituisce il valore impostato nella configurazione globale della proprietà `CollectSqlQueries`.

**Example Esempio`Controller.cs`: abilita la raccolta di query SQL per l'istanza**  

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