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
End-of-support pemberitahuan — Pada tanggal 25 Februari 2027, AWS X-Ray akan menghentikan dukungan untuk AWS X-Ray SDKs dan daemon. Setelah 25 Februari 2027, Anda tidak akan lagi menerima pembaruan atau rilis. Untuk informasi selengkapnya tentang garis waktu dukungan, lihatX-Ray SDK dan daemon akhir garis waktu dukungan. 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
CollectSqlQueries
untuktrue
dalam konfigurasi global untuk aplikasi Anda. -
Atur parameter
collectSqlQueries
dalam instansTraceableSqlCommand
untuktrue
mengumpulkan 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();
}
}