Skip to content

Commit 46ab2ec

Browse files
Add "Transaction Id" and "Client Version" in Diagnostic Source traces (#515)
1 parent 0177b19 commit 46ab2ec

File tree

3 files changed

+59
-47
lines changed

3 files changed

+59
-47
lines changed

src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlClientDiagnosticListenerExtensions.cs

+21-9
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ internal static class SqlClientDiagnosticListenerExtensions
3838
public const string SqlAfterRollbackTransaction = SqlClientPrefix + nameof(WriteTransactionRollbackAfter);
3939
public const string SqlErrorRollbackTransaction = SqlClientPrefix + nameof(WriteTransactionRollbackError);
4040

41-
public static Guid WriteCommandBefore(this DiagnosticListener @this, SqlCommand sqlCommand, [CallerMemberName] string operation = "")
41+
public static Guid WriteCommandBefore(this DiagnosticListener @this, SqlCommand sqlCommand, SqlTransaction transaction, [CallerMemberName] string operation = "")
4242
{
4343
if (@this.IsEnabled(SqlBeforeExecuteCommand))
4444
{
@@ -52,6 +52,7 @@ public static Guid WriteCommandBefore(this DiagnosticListener @this, SqlCommand
5252
Operation = operation,
5353
ConnectionId = sqlCommand.Connection?.ClientConnectionId,
5454
Command = sqlCommand,
55+
transaction?.InternalTransaction?.TransactionId,
5556
Timestamp = Stopwatch.GetTimestamp()
5657
});
5758

@@ -61,7 +62,7 @@ public static Guid WriteCommandBefore(this DiagnosticListener @this, SqlCommand
6162
return Guid.Empty;
6263
}
6364

64-
public static void WriteCommandAfter(this DiagnosticListener @this, Guid operationId, SqlCommand sqlCommand, [CallerMemberName] string operation = "")
65+
public static void WriteCommandAfter(this DiagnosticListener @this, Guid operationId, SqlCommand sqlCommand, SqlTransaction transaction, [CallerMemberName] string operation = "")
6566
{
6667
if (@this.IsEnabled(SqlAfterExecuteCommand))
6768
{
@@ -73,13 +74,14 @@ public static void WriteCommandAfter(this DiagnosticListener @this, Guid operati
7374
Operation = operation,
7475
ConnectionId = sqlCommand.Connection?.ClientConnectionId,
7576
Command = sqlCommand,
77+
transaction?.InternalTransaction?.TransactionId,
7678
Statistics = sqlCommand.Statistics?.GetDictionary(),
7779
Timestamp = Stopwatch.GetTimestamp()
7880
});
7981
}
8082
}
8183

82-
public static void WriteCommandError(this DiagnosticListener @this, Guid operationId, SqlCommand sqlCommand, Exception ex, [CallerMemberName] string operation = "")
84+
public static void WriteCommandError(this DiagnosticListener @this, Guid operationId, SqlCommand sqlCommand, SqlTransaction transaction, Exception ex, [CallerMemberName] string operation = "")
8385
{
8486
if (@this.IsEnabled(SqlErrorExecuteCommand))
8587
{
@@ -91,6 +93,7 @@ public static void WriteCommandError(this DiagnosticListener @this, Guid operati
9193
Operation = operation,
9294
ConnectionId = sqlCommand.Connection?.ClientConnectionId,
9395
Command = sqlCommand,
96+
transaction?.InternalTransaction?.TransactionId,
9497
Exception = ex,
9598
Timestamp = Stopwatch.GetTimestamp()
9699
});
@@ -110,6 +113,7 @@ public static Guid WriteConnectionOpenBefore(this DiagnosticListener @this, SqlC
110113
OperationId = operationId,
111114
Operation = operation,
112115
Connection = sqlConnection,
116+
ClientVersion = ThisAssembly.InformationalVersion,
113117
Timestamp = Stopwatch.GetTimestamp()
114118
});
115119

@@ -131,6 +135,7 @@ public static void WriteConnectionOpenAfter(this DiagnosticListener @this, Guid
131135
Operation = operation,
132136
ConnectionId = sqlConnection.ClientConnectionId,
133137
Connection = sqlConnection,
138+
ClientVersion = ThisAssembly.InformationalVersion,
134139
Statistics = sqlConnection.Statistics?.GetDictionary(),
135140
Timestamp = Stopwatch.GetTimestamp()
136141
});
@@ -149,6 +154,7 @@ public static void WriteConnectionOpenError(this DiagnosticListener @this, Guid
149154
Operation = operation,
150155
ConnectionId = sqlConnection.ClientConnectionId,
151156
Connection = sqlConnection,
157+
ClientVersion = ThisAssembly.InformationalVersion,
152158
Exception = ex,
153159
Timestamp = Stopwatch.GetTimestamp()
154160
});
@@ -216,7 +222,7 @@ public static void WriteConnectionCloseError(this DiagnosticListener @this, Guid
216222
}
217223
}
218224

219-
public static Guid WriteTransactionCommitBefore(this DiagnosticListener @this, IsolationLevel isolationLevel, SqlConnection connection, [CallerMemberName] string operation = "")
225+
public static Guid WriteTransactionCommitBefore(this DiagnosticListener @this, IsolationLevel isolationLevel, SqlConnection connection, SqlInternalTransaction transaction, [CallerMemberName] string operation = "")
220226
{
221227
if (@this.IsEnabled(SqlBeforeCommitTransaction))
222228
{
@@ -230,6 +236,7 @@ public static Guid WriteTransactionCommitBefore(this DiagnosticListener @this, I
230236
Operation = operation,
231237
IsolationLevel = isolationLevel,
232238
Connection = connection,
239+
transaction?.TransactionId,
233240
Timestamp = Stopwatch.GetTimestamp()
234241
});
235242

@@ -239,7 +246,7 @@ public static Guid WriteTransactionCommitBefore(this DiagnosticListener @this, I
239246
return Guid.Empty;
240247
}
241248

242-
public static void WriteTransactionCommitAfter(this DiagnosticListener @this, Guid operationId, IsolationLevel isolationLevel, SqlConnection connection, [CallerMemberName] string operation = "")
249+
public static void WriteTransactionCommitAfter(this DiagnosticListener @this, Guid operationId, IsolationLevel isolationLevel, SqlConnection connection, SqlInternalTransaction transaction, [CallerMemberName] string operation = "")
243250
{
244251
if (@this.IsEnabled(SqlAfterCommitTransaction))
245252
{
@@ -251,12 +258,13 @@ public static void WriteTransactionCommitAfter(this DiagnosticListener @this, Gu
251258
Operation = operation,
252259
IsolationLevel = isolationLevel,
253260
Connection = connection,
261+
transaction?.TransactionId,
254262
Timestamp = Stopwatch.GetTimestamp()
255263
});
256264
}
257265
}
258266

259-
public static void WriteTransactionCommitError(this DiagnosticListener @this, Guid operationId, IsolationLevel isolationLevel, SqlConnection connection, Exception ex, [CallerMemberName] string operation = "")
267+
public static void WriteTransactionCommitError(this DiagnosticListener @this, Guid operationId, IsolationLevel isolationLevel, SqlConnection connection, SqlInternalTransaction transaction, Exception ex, [CallerMemberName] string operation = "")
260268
{
261269
if (@this.IsEnabled(SqlErrorCommitTransaction))
262270
{
@@ -268,13 +276,14 @@ public static void WriteTransactionCommitError(this DiagnosticListener @this, Gu
268276
Operation = operation,
269277
IsolationLevel = isolationLevel,
270278
Connection = connection,
279+
transaction?.TransactionId,
271280
Exception = ex,
272281
Timestamp = Stopwatch.GetTimestamp()
273282
});
274283
}
275284
}
276285

277-
public static Guid WriteTransactionRollbackBefore(this DiagnosticListener @this, IsolationLevel isolationLevel, SqlConnection connection, string transactionName, [CallerMemberName] string operation = "")
286+
public static Guid WriteTransactionRollbackBefore(this DiagnosticListener @this, IsolationLevel isolationLevel, SqlConnection connection, SqlInternalTransaction transaction, string transactionName = null, [CallerMemberName] string operation = "")
278287
{
279288
if (@this.IsEnabled(SqlBeforeRollbackTransaction))
280289
{
@@ -288,6 +297,7 @@ public static Guid WriteTransactionRollbackBefore(this DiagnosticListener @this,
288297
Operation = operation,
289298
IsolationLevel = isolationLevel,
290299
Connection = connection,
300+
transaction?.TransactionId,
291301
TransactionName = transactionName,
292302
Timestamp = Stopwatch.GetTimestamp()
293303
});
@@ -298,7 +308,7 @@ public static Guid WriteTransactionRollbackBefore(this DiagnosticListener @this,
298308
return Guid.Empty;
299309
}
300310

301-
public static void WriteTransactionRollbackAfter(this DiagnosticListener @this, Guid operationId, IsolationLevel isolationLevel, SqlConnection connection, string transactionName, [CallerMemberName] string operation = "")
311+
public static void WriteTransactionRollbackAfter(this DiagnosticListener @this, Guid operationId, IsolationLevel isolationLevel, SqlConnection connection, SqlInternalTransaction transaction, string transactionName = null, [CallerMemberName] string operation = "")
302312
{
303313
if (@this.IsEnabled(SqlAfterRollbackTransaction))
304314
{
@@ -310,13 +320,14 @@ public static void WriteTransactionRollbackAfter(this DiagnosticListener @this,
310320
Operation = operation,
311321
IsolationLevel = isolationLevel,
312322
Connection = connection,
323+
transaction?.TransactionId,
313324
TransactionName = transactionName,
314325
Timestamp = Stopwatch.GetTimestamp()
315326
});
316327
}
317328
}
318329

319-
public static void WriteTransactionRollbackError(this DiagnosticListener @this, Guid operationId, IsolationLevel isolationLevel, SqlConnection connection, string transactionName, Exception ex, [CallerMemberName] string operation = "")
330+
public static void WriteTransactionRollbackError(this DiagnosticListener @this, Guid operationId, IsolationLevel isolationLevel, SqlConnection connection, SqlInternalTransaction transaction, Exception ex, string transactionName = null, [CallerMemberName] string operation = "")
320331
{
321332
if (@this.IsEnabled(SqlErrorRollbackTransaction))
322333
{
@@ -328,6 +339,7 @@ public static void WriteTransactionRollbackError(this DiagnosticListener @this,
328339
Operation = operation,
329340
IsolationLevel = isolationLevel,
330341
Connection = connection,
342+
transaction?.TransactionId,
331343
TransactionName = transactionName,
332344
Exception = ex,
333345
Timestamp = Stopwatch.GetTimestamp()

0 commit comments

Comments
 (0)