Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Pelacakan kueri SQL dengan X-Ray SDK for .NET
catatan
Pemberitahuan SDK/Daemon Pemeliharaan X-Ray - Pada 25 Februari 2026, AWS SDKs/Daemon X-Ray akan memasuki mode pemeliharaan, di mana AWS akan membatasi rilis X-Ray SDK dan Daemon untuk mengatasi masalah keamanan saja. Untuk informasi selengkapnya tentang garis waktu dukungan, lihatGaris waktu Dukungan X-Ray SDK dan Daemon. Kami merekomendasikan untuk bermigrasi ke OpenTelemetry. Untuk informasi lebih lanjut tentang migrasi ke OpenTelemetry, lihat Migrasi dari instrumentasi X-Ray ke instrumentasi. OpenTelemetry
X-Ray SDK for .NET menyediakan kelas pembungkus untuk System.Data.SqlClient.SqlCommand, bernama TraceableSqlCommand, yang dapat Anda gunakan sebagai pengganti SqlCommand. Anda dapat menginisialisasi perintah SQL dengan kelas TraceableSqlCommand.
Pelacakan kueri SQL dengan metode sinkron dan asinkron
Contoh berikut menunjukkan tentang menggunakan TraceableSqlCommand untuk secara otomatis melacak kueri SQL Server secara sinkron dan asinkron.
contoh Controller.cs - Instrumentasi klien SQL (sinkron)
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();
}
}Anda dapat menjalankan kueri secara asinkron dengan menggunakan metode ExecuteReaderAsync.
contoh Controller.cs - Instrumentasi klien SQL (asinkron)
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();
}
}Mengumpulkan kueri SQL yang dibuat untuk SQL Server
Anda dapat mengaktifkan penangkapan SqlCommand.CommandText sebagai bagian dari subsegment yang dibuat oleh kueri SQL Anda. SqlCommand.CommandText muncul sebagai bidang sanitized_query di subsegmen JSON. Secara default, fitur ini dinonaktifkan untuk keamanan.
catatan
Jangan mengaktifkan fitur pengumpulan jika Anda menyertakan informasi sensitif sebagai teks yang jelas dalam kueri SQL Anda.
Anda dapat mengaktifkan pengumpulan kueri SQL dengan dua cara:
-
Atur properti
CollectSqlQueriesuntuktruedalam konfigurasi global untuk aplikasi Anda. -
Atur parameter
collectSqlQueriesdalam instansTraceableSqlCommanduntuktruemengumpulkan panggilan dalam instans.
Aktifkan CollectSqlQueries properti global
Contoh berikut menunjukkan tentang mengaktifkan properti CollectSqlQueries untuk NET dan Inti .NET.
Aktifkan collectSqlQueries parameter
Anda dapat mengatur parameter collectSqlQueries dalam instans TraceableSqlCommand ke true untuk mengumpulkan teks kueri SQL untuk kueri SQL Server dibuat menggunakan instans tersebut. Mengatur parameter ke false menonaktifkan fitur CollectSqlQuery untuk instans TraceableSqlCommand.
catatan
Nilai collectSqlQueries dalam instans TraceableSqlCommand mengganti nilai yang ditetapkan dalam konfigurasi global properti CollectSqlQueries.
contoh Contoh Controller.cs – Aktifkan pengumpulan Kueri SQL untuk instans
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();
}
}