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
Nota
End-of-support avviso — Il 25 febbraio 2027, AWS X-Ray interromperà il supporto per e daemon. AWS X-Ray SDKs Dopo il 25 febbraio 2027, non riceverai più aggiornamenti o versioni. Per ulteriori informazioni sulla tempistica del supporto, consulta. Cronologia della fine del supporto per X-Ray SDK e daemon Ti consigliamo di migrare a. OpenTelemetry Per ulteriori informazioni sulla migrazione a OpenTelemetry, vedere Migrazione dalla strumentazione a raggi X alla strumentazione. OpenTelemetry
L'X-Ray SDK for .NET fornisce una classe wrapperSystem.Data.SqlClient.SqlCommand, denominataTraceableSqlCommand, 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
I seguenti esempi mostrano come utilizzare TraceableSqlCommand per tracciare automaticamente query SQL Server in modo sincrono e asincrono.
Esempio Controller.cs - Analisi client SQL (sincrono)
using Amazon;
using Amazon.Util;
using Amazon.XRay.Recorder.Core;
using Amazon.XRay.Recorder.Handlers.SqlServer;
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.
Esempio Controller.cs - Analisi client SQL (Asincrono)
using Amazon;
using Amazon.Util;
using Amazon.XRay.Recorder.Core;
using Amazon.XRay.Recorder.Handlers.SqlServer;
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
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à
CollectSqlQueriessutruenella configurazione globale dell'applicazione. -
Imposta il parametro
collectSqlQueriesnell'istanzaTraceableSqlCommandsutrueper raccogliere le chiamate all'interno dell'istanza.
Abilita la proprietà globale CollectSqlQueries
I seguenti esempi mostrano come abilitare la proprietà CollectSqlQueries per .NET e .NET Core.
Abilita il collectSqlQueries parametro
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.
EsempioController.cs: abilita la raccolta di query SQL per l'istanza
using Amazon;
using Amazon.Util;
using Amazon.XRay.Recorder.Core;
using Amazon.XRay.Recorder.Handlers.SqlServer;
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();
}
}