Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Suivi des requêtes SQL avec le SDK X-Ray pour .NET
Note
End-of-support avis — Le 25 février 2027, AWS X-Ray cessera de prendre en charge AWS X-Ray SDKs et Daemon. Après le 25 février 2027, vous ne recevrez plus de mises à jour ni de versions. Pour plus d'informations sur le calendrier de support, consultezChronologie de fin de support du SDK et du daemon X-Ray. Nous vous recommandons de migrer vers OpenTelemetry. Pour plus d'informations sur la migration vers OpenTelemetry, voir Migration de l'instrumentation X-Ray vers OpenTelemetry l'instrumentation.
Le SDK X-Ray pour .NET fournit une classe wrapper System.Data.SqlClient.SqlCommand pour, TraceableSqlCommand named, que vous pouvez utiliser à la place de. SqlCommand Vous pouvez initialiser une commande SQL avec la classe TraceableSqlCommand.
Suivi des requêtes SQL avec des méthodes synchrones et asynchrones
Les exemples suivants montrent comment utiliser TraceableSqlCommand pour suivre automatiquement les requêtes SQL Server de manière synchrone et asynchrone.
Exemple Controller.cs - Instrumentation de client SQL (synchrone)
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();
}
}Vous pouvez exécuter la requête de manière asynchrone à l'aide de la méthode ExecuteReaderAsync.
Exemple Controller.cs - Instrumentation de client SQL (asynchrone)
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();
}
}Collecte de requêtes SQL sur SQL Server
Vous pouvez activer la capture de SqlCommand.CommandText dans le cadre du sous-segment créé par votre requête SQL. SqlCommand.CommandText apparaît en tant que champ sanitized_query dans le sous-segment JSON. Par défaut, cette fonction est désactivée pour des raisons de sécurité.
Note
N'activez pas la fonction de collecte si vous incluez des informations sensibles sous forme de texte clair dans vos requêtes SQL.
Vous pouvez activer la collection de requêtes SQL de deux manières :
-
Définissez la propriété
CollectSqlQueriessurtruedans la configuration globale de votre application. -
Définissez le paramètre
collectSqlQueriesdans l'instanceTraceableSqlCommandsurtruepour collecter les appels au sein de l'instance.
Activer la CollectSqlQueries propriété globale
Les exemples suivants montrent comment activer la propriété CollectSqlQueries pour .NET et .NET Core.
Activez le collectSqlQueries paramètre
Vous pouvez définir le paramètre collectSqlQueries dans l'instance TraceableSqlCommand sur true afin de collecter le texte de la requête SQL pour les requêtes SQL Server effectuées à l'aide de cette instance. La définition du paramètre sur false désactive la fonction CollectSqlQuery pour l'instance TraceableSqlCommand.
Note
La valeur de collectSqlQueries dans l'instance TraceableSqlCommand remplace la valeur définie dans la configuration globale de la propriété CollectSqlQueries.
Exemple Controller.cs — Activer la collecte de requêtes SQL pour l'instance
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();
}
}