fix(sqlserver): enable arithabort for activity trace reads

Closes #6440
This commit is contained in:
t8y2 committed 2026-08-17 05:38:32 +00:00
1 parent f6b91e93dc
commit 710b264bc4
2 files changed
+15 -3

No files matched your search

@@ -92,6 +92,11 @@ function internalSql(sql: string): string {
return `/* ${SQLSERVER_TRACE_INTERNAL_MARKER} */\n${sql}`;
}
function scopedSqlServerTraceXmlQuery(sql: string): string {
// XML methods require ARITHABORT, while a dynamic batch restores the caller's SET options when it returns.
return `EXEC sys.sp_executesql ${sqlString(`SET ARITHABORT ON;\n${sql}`)};`;
}
export function buildSqlServerTraceCapabilitiesSql(database: string): string {
return internalSql(`SELECT
CAST(SERVERPROPERTY(N'ProductVersion') AS nvarchar(128)) AS product_version,
@@ -277,7 +282,8 @@ ALTER EVENT SESSION [${sessionName}] ON SERVER STATE = START;`);
export function buildReadSqlServerTraceEventsSql(sessionName: string, afterTimestamp?: string): string {
assertSessionName(sessionName);
const cursorPredicate = afterTimestamp ? `WHERE event_time_utc >= CONVERT(datetime2(7), ${sqlString(afterTimestamp.replace(" ", "T"))}, 126)` : "";
return internalSql(`;WITH target AS (
return internalSql(
scopedSqlServerTraceXmlQuery(`;WITH target AS (
SELECT CAST(target.target_data AS xml) AS target_data
FROM sys.dm_xe_session_targets target
JOIN sys.dm_xe_sessions session ON session.address = target.event_session_address
@@ -312,7 +318,8 @@ CROSS APPLY target_data.nodes('/RingBufferTarget/event') AS events(event_node)
)
SELECT *
FROM bounded_events
ORDER BY event_time_utc;`);
ORDER BY event_time_utc;`),
);
}
export function buildStopSqlServerTraceSessionSql(sessionName: string): string {