Closed Sicos1977 closed 1 year ago
I think the best you can do with the current implementation is to use ‘get_full_inner_text = 0’ with ‘get_outer_command = 1’ which will show you the module name and the current command in it. I realize it’s not precisely what you’re asking for.
I see that this parts decided to get the inner our outer parts. I tried to add a column myself that gives both parts that I need but I got lost in the stored procedure because it is so damn huge :-)
s.sql_text =
(
SELECT
REPLACE
(
REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(
REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(
REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(
N'--' + NCHAR(13) + NCHAR(10) +
CASE
WHEN @get_full_inner_text = 1 THEN est.text
WHEN LEN(est.text) < (@statement_end_offset / 2) + 1 THEN est.text
WHEN SUBSTRING(est.text, (@statement_start_offset/2), 2) LIKE N'[a-zA-Z0-9][a-zA-Z0-9]' THEN est.text
ELSE
CASE
WHEN @statement_start_offset > 0 THEN
SUBSTRING
(
est.text,
((@statement_start_offset/2) + 1),
(
CASE
WHEN @statement_end_offset = -1 THEN 2147483647
ELSE ((@statement_end_offset - @statement_start_offset)/2) + 1
END
)
)
ELSE RTRIM(LTRIM(est.text))
END
END +
NCHAR(13) + NCHAR(10) + N'--' COLLATE Latin1_General_Bin2,
NCHAR(31),N'?'),NCHAR(30),N'?'),NCHAR(29),N'?'),NCHAR(28),N'?'),NCHAR(27),N'?'),NCHAR(26),N'?'),NCHAR(25),N'?'),NCHAR(24),N'?'),NCHAR(23),N'?'),NCHAR(22),N'?'),
NCHAR(21),N'?'),NCHAR(20),N'?'),NCHAR(19),N'?'),NCHAR(18),N'?'),NCHAR(17),N'?'),NCHAR(16),N'?'),NCHAR(15),N'?'),NCHAR(14),N'?'),NCHAR(12),N'?'),
NCHAR(11),N'?'),NCHAR(8),N'?'),NCHAR(7),N'?'),NCHAR(6),N'?'),NCHAR(5),N'?'),NCHAR(4),N'?'),NCHAR(3),N'?'),NCHAR(2),N'?'),NCHAR(1),N'?'),
NCHAR(0),
N''
) AS [processing-instruction(query)]
FOR XML
PATH(''),
TYPE
),
s.statement_start_offset =
CASE
WHEN LEN(est.text) < (@statement_end_offset / 2) + 1 THEN 0
WHEN SUBSTRING(CONVERT(VARCHAR(MAX), est.text), (@statement_start_offset/2), 2) LIKE '[a-zA-Z0-9][a-zA-Z0-9]' THEN 0
ELSE @statement_start_offset
END,
s.statement_end_offset =
CASE
WHEN LEN(est.text) < (@statement_end_offset / 2) + 1 THEN -1
WHEN SUBSTRING(CONVERT(VARCHAR(MAX), est.text), (@statement_start_offset/2), 2) LIKE '[a-zA-Z0-9][a-zA-Z0-9]' THEN -1
ELSE @statement_end_offset
END
Any tips where to look if I want to add an extra collumn, for example
sql_text
--> sql_full_text
(renamed) and then also add a column sql_running_text
so that I only get the running part in there?
And then for example add an extra level to get_outer_command = 2 so that this behaviour is shown instead of the default behaviour.
We can also just not rename sql_text
and just add only the extra column sql_running_text
when requested
@Sicos1977 it's been a while since we've heard back from you on this, so I'm going to close the issue out for now. If you decide you want to work on it, just leave a comment here and I'll reopen the issue.
In my case most of my methods that are running against the database are comming from stored procedures. When the parameter @get_full_inner_text = 1 is set I can get the whole stored procedure but then I don't have the part that is running. Is it somehow possible to get both outer and inner parts.
The reason why I want this is because I want to show the whole stored procedure in a webpage and then highlight the part that is running with the this part is running tags.
I already tried @get_outer_command = 1 but that gives me only the name of the stored procedure that is called.