

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
<a name="xray-sdk-dotnet-sqlqueries"></a>

**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, lihat[Garis waktu Dukungan X-Ray SDK dan Daemon](xray-sdk-daemon-timeline.md). Kami merekomendasikan untuk bermigrasi ke OpenTelemetry. Untuk informasi lebih lanjut tentang migrasi ke OpenTelemetry, lihat [Migrasi dari instrumentasi X-Ray ke instrumentasi](https://docs.aws.amazon.com/xray/latest/devguide/xray-sdk-migration.html). 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
<a name="xray-sdk-dotnot-sqlqueries-trace"></a>

Contoh berikut menunjukkan tentang menggunakan `TraceableSqlCommand` untuk secara otomatis melacak kueri SQL Server secara sinkron dan asinkron.

**Example `Controller.cs` - Instrumentasi klien SQL (sinkron)**  

```
using Amazon;
using Amazon.Util;
using [Amazon.XRay.Recorder.Core](https://docs.aws.amazon.com/xray-sdk-for-dotnet/latest/reference/html/N_Amazon_XRay_Recorder_Core.htm);
using [Amazon.XRay.Recorder.Handlers.SqlServer](https://docs.aws.amazon.com/xray-sdk-for-dotnet/latest/reference/html/N_Amazon_XRay_Recorder_Handlers_SqlServer.htm);

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`.

**Example `Controller.cs` - Instrumentasi klien SQL (asinkron)**  

```
using Amazon;
using Amazon.Util;
using [Amazon.XRay.Recorder.Core](https://docs.aws.amazon.com/xray-sdk-for-dotnet/latest/reference/html/N_Amazon_XRay_Recorder_Core.htm);
using [Amazon.XRay.Recorder.Handlers.SqlServer](https://docs.aws.amazon.com/xray-sdk-for-dotnet/latest/reference/html/N_Amazon_XRay_Recorder_Handlers_SqlServer.htm);
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
<a name="xray-sdk-dotnot-sqlqueries-collect"></a>

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 CollectSqlQueries properti global
<a name="xray-sdk-dotnot-sqlqueries-collect-global"></a>

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.

**Example `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.

**Example `appsettings.json` – Aktifkan pengumpulan Kueri SQL secara global**  

```
{
  "XRay": {
    "CollectSqlQueries":"true"
  }
}
```

------

### Aktifkan collectSqlQueries parameter
<a name="xray-sdk-dotnot-sqlqueries-collect-instance"></a>

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`.

**Example Contoh `Controller.cs` – Aktifkan pengumpulan Kueri SQL untuk instans**  

```
using Amazon;
using Amazon.Util;
using [Amazon.XRay.Recorder.Core](https://docs.aws.amazon.com/xray-sdk-for-dotnet/latest/reference/html/N_Amazon_XRay_Recorder_Core.htm);
using [Amazon.XRay.Recorder.Handlers.SqlServer](https://docs.aws.amazon.com/xray-sdk-for-dotnet/latest/reference/html/N_Amazon_XRay_Recorder_Handlers_SqlServer.htm);

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