Last active
November 4, 2022 16:01
-
-
Save zikato/e7dd190ed193f7de954f85ce6fcaa7c3 to your computer and use it in GitHub Desktop.
TSQL Scripts
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
DECLARE @stackOrFrame xml = 'Paste the <frames></frames> here' | |
;WITH | |
xmlShred AS | |
( | |
SELECT | |
COALESCE | |
( | |
CONVERT(varbinary(64), f.n.value('.[1]/@handle', 'varchar(max)'), 1), | |
CONVERT(varbinary(64), f.n.value('.[1]/@sqlhandle', 'varchar(max)'), 1) | |
) AS handle, | |
COALESCE | |
( | |
f.n.value('.[1]/@offsetStart', 'int'), | |
f.n.value('.[1]/@stmtstart', 'int') | |
) AS offsetStart, | |
COALESCE | |
( | |
f.n.value('.[1]/@offsetEnd', 'int'), | |
f.n.value('.[1]/@stmtend', 'int') | |
) AS offsetEnd, | |
f.n.value('.[1]/@line', 'int') AS line, | |
f.n.value('.[1]/@level', 'tinyint') AS stackLevel | |
FROM @stackOrFrame.nodes('//frame') AS f(n) | |
) | |
SELECT | |
xs.stackLevel, | |
ca.outerText, | |
ca2.statementText | |
FROM | |
xmlShred AS xs | |
CROSS APPLY sys.dm_exec_sql_text(xs.handle) AS dest | |
CROSS APPLY (SELECT LTRIM(RTRIM(dest.text)) FOR XML PATH(''), TYPE) AS ca(outerText) | |
CROSS APPLY | |
( | |
SELECT | |
SUBSTRING | |
( | |
dest.text, | |
(xs.offsetStart / 2) + 1, | |
(( | |
CASE | |
WHEN xs.offsetEnd = -1 | |
THEN DATALENGTH(dest.text) | |
ELSE xs.offsetEnd | |
END | |
- xs.offsetStart | |
) / 2) + 1 | |
) | |
FOR XML PATH(''), TYPE | |
) AS ca2(statementText) | |
ORDER BY xs.stackLevel | |
OPTION (RECOMPILE); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment