X-Ray SDK for .NET
X-Ray SDK for .NET は、SqlCommand
の代わりに使用できる TraceableSqlCommand
という名前の System.Data.SqlClient.SqlCommand
のラッパークラスを提供します。TraceableSqlCommand
クラスを使用して、SQL コマンドを初期化できます。
同期メソッドと非同期メソッドを使用した SQL クエリのトレース
以下の例では、TraceableSqlCommand
を使用して自動的に SQL Server クエリを同期的および非同期的にトレースする方法を示しています。
例 Controller.cs
- SQL クライアント計測 (同期)
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();
}
}
ExecuteReaderAsync
メソッドを使用して、クエリを非同期的に実行できます。
例 Controller.cs
- SQL クライアント計測 (非同期)
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();
}
}
SQL Server に対して実行された SQL クエリの収集
SQL クエリによって作成されたサブセグメントの一部として SqlCommand.CommandText
のキャプチャを有効にできます。SqlCommand.CommandText
は、サブセグメント JSON のフィールド sanitized_query
として表示されます。デフォルトでは、この機能はセキュリティのために無効になっています。
注記
SQL クエリに機密情報をクリアテキストとして含める場合は、収集機能を有効にしないでください。
SQL クエリの収集を有効にするには、以下の 2 つの方法があります。
-
アプリケーションのグローバル設定で
CollectSqlQueries
プロパティをtrue
に設定する。 -
インスタンス内の呼び出しを収集するには、
TraceableSqlCommand
インスタンスのcollectSqlQueries
パラメータをtrue
に設定する。
Global CollectSqlQueries プロパティを有効にする
以下の例では、.NET および .NET Core の CollectSqlQueries
プロパティを有効にする方法を示しています。
collectSqlQueries パラメータを有効にする
TraceableSqlCommand
インスタンスの collectSqlQueries
パラメータを true
に設定することで、そのインスタンスを使用して実行された SQL Server クエリの SQL クエリテキストを収集できます。このパラメータを false
に設定すると、TraceableSqlCommand
インスタンスの CollectSqlQuery
機能が無効になります。
注記
TraceableSqlCommand
インスタンスの collectSqlQueries
の値は、CollectSqlQueries
プロパティのグローバル設定で指定された値を上書きします。
例 サンプル Controller.cs
– インスタンスの SQL クエリの収集を有効にする
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();
}
}