Pelacakan kueri SQL dengan X-Ray SDK for .NET - AWS X-Ray

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

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 untuk true dalam konfigurasi global untuk aplikasi Anda.

  • Atur parameter collectSqlQueries dalam instans TraceableSqlCommand untuk true mengumpulkan panggilan dalam instans.

Aktifkan properti global CollectSqlQueries

Contoh berikut menunjukkan tentang mengaktifkan properti CollectSqlQueries untuk NET dan Inti .NET.

.NET

Untuk mengatur properti CollectSqlQueries untuk true dalam konfigurasi global dari aplikasi Anda di .NET, modifikasi appsettings dari file App.config atau Web.config Anda, seperti yang ditunjukkan.

contoh App.config Atau Web.config – Aktifkan pengumpulan Kueri SQL secara global
<configuration> <appSettings> <add key="CollectSqlQueries" value="true"> </appSettings> </configuration>
.NET Core

Untuk mengatur properti CollectSqlQueries untuk true dalam konfigurasi global dari aplikasi Anda di .NET Core, modifikasi file appsettings.json Anda di bawah kunci X-Ray, seperti yang ditunjukkan.

contoh appsettings.json – Aktifkan pengumpulan Kueri SQL secara global
{ "XRay": { "CollectSqlQueries":"true" } }

Aktifkan parameter collectSqlQueries

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(); } }