Skip to content

Commit fe99564

Browse files
committed
Added token for {ActualServerName}
1 parent 715e262 commit fe99564

File tree

2 files changed

+52
-13
lines changed

2 files changed

+52
-13
lines changed

AssemblyInfo.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,6 @@
2929
// You can specify all the values or you can default the Build and Revision Numbers
3030
// by using the '*' as shown below:
3131
// [assembly: AssemblyVersion("1.0.*")]
32-
[assembly: AssemblyVersion("2.0.7.0")]
33-
[assembly: AssemblyFileVersion("2.0.7.0")]
32+
[assembly: AssemblyVersion("2.0.8.0")]
33+
[assembly: AssemblyFileVersion("2.0.8.0")]
3434

XESmartTarget.Core/Target.cs

Lines changed: 50 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
using Microsoft.SqlServer.XEvent.XELite;
33
using NLog;
44
using System.Diagnostics;
5+
using System.Runtime.Intrinsics.Arm;
56
using XESmartTarget.Core.Utils;
67

78
namespace XESmartTarget.Core
@@ -297,21 +298,59 @@ private XELiveEventStreamer ConnectSessionStream(string connectionString)
297298
using (var conn = new SqlConnection(connectionString))
298299
{
299300
conn.Open();
300-
var cmd = conn.CreateCommand();
301-
cmd.CommandText = @"IF SERVERPROPERTY('EngineEdition') = 5
302-
BEGIN
303-
SELECT name FROM sys.dm_xe_database_sessions WHERE name = @sessionName
304-
END
305-
ELSE
306-
BEGIN
307-
SELECT name FROM sys.dm_xe_sessions WHERE name = @sessionName
308-
END ";
301+
using var cmd = conn.CreateCommand();
302+
cmd.CommandText = """
303+
IF SERVERPROPERTY('EngineEdition') = 5
304+
BEGIN
305+
SELECT
306+
@@SERVERNAME AS server_name,
307+
SERVERPROPERTY('EngineEdition') AS engine_edition,
308+
name
309+
FROM sys.dm_xe_database_sessions
310+
WHERE name = @sessionName
311+
END
312+
ELSE
313+
BEGIN
314+
SELECT
315+
@@SERVERNAME AS server_name,
316+
SERVERPROPERTY('EngineEdition') AS engine_edition,
317+
name
318+
FROM sys.dm_xe_sessions
319+
WHERE name = @sessionName
320+
END
321+
""";
309322
cmd.Parameters.Add(new SqlParameter("@sessionName", SessionName));
310-
var name = cmd.ExecuteScalar();
311-
if(name == null)
323+
string? serverName = null, sessionName = null;
324+
int engineEdition;
325+
using (var rdr = cmd.ExecuteReader())
326+
if (rdr.Read())
327+
{
328+
serverName = rdr.GetString(0);
329+
engineEdition = rdr.GetInt32(1);
330+
sessionName = rdr.GetString(2);
331+
}
332+
if (sessionName == null)
312333
{
313334
throw new ArgumentException($"Connected to {ConnectionInfo.ServerName}. Session {SessionName} not found.");
314335
}
336+
337+
// we need to store the actual server name in the tokens
338+
// actual server name might be different from the one used to connect
339+
// which is particularly true in case of AG listeners
340+
// Also Azure SQL Managed Instance and Azure SQL Database
341+
// might return different server names
342+
foreach (Response r in Responses)
343+
{
344+
if (!r.Tokens.ContainsKey("ActualServerName"))
345+
{
346+
r.Tokens.Add("ActualServerName", serverName);
347+
}
348+
else
349+
{
350+
r.Tokens["ActualServerName"] = serverName;
351+
}
352+
}
353+
315354
conn.Close();
316355
logger.Info($"Connected to session {SessionName} on {ConnectionInfo.ServerName}.");
317356
}

0 commit comments

Comments
 (0)