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 l'SDK X-Ray per .NET
X-Ray SDK for .NET fornisce una classe wrapper perSystem.Data.SqlClient.SqlCommand
, denominatoTraceableSqlCommand
, che puoi utilizzare al posto diSqlCommand
. 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à
CollectSqlQueries
sutrue
nella configurazione globale dell'applicazione. -
Imposta il parametro
collectSqlQueries
nell'istanzaTraceableSqlCommand
sutrue
per raccogliere le chiamate all'interno dell'istanza.
Abilitazione della proprietà CollectSqlQueries globale
I seguenti esempi mostrano come abilitare la proprietà CollectSqlQueries
per .NET e .NET Core.
Abilitazione del parametro collectSqlQueries
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
— Abilitazione della 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();
}
}