There is a small portion of sp_Whoisactive code which gives the results about the Agent Jobs and their steps. If we comment that code then it can be used for SQL azure instances also.
The complete code can be found at :https://drive.google.com/file/d/0B-Ezzyr3ZkV7UmNWVTVzcXVDdVE/view?usp=sharing
Below is the code snippet to comment:
The complete code can be found at :https://drive.google.com/file/d/0B-Ezzyr3ZkV7UmNWVTVzcXVDdVE/view?usp=sharing
Below is the code snippet to comment:
IF @output_column_list LIKE '%|[program_name|]%' ESCAPE '|' AND @output_column_list LIKE '%|[additional_info|]%' ESCAPE '|' AND @recursion = 1 BEGIN ; DECLARE @job_id UNIQUEIDENTIFIER; DECLARE @step_id INT; DECLARE agent_cursor CURSOR LOCAL FAST_FORWARD FOR SELECT s.session_id ,agent_nodes.agent_node.value('(job_id/text())[1]', 'uniqueidentifier') AS job_id ,agent_nodes.agent_node.value('(step_id/text())[1]', 'int') AS step_id FROM #sessions AS s CROSS APPLY s.additional_info.nodes('//agent_job_info') AS agent_nodes(agent_node) WHERE s.recursion = 1 OPTION (KEEPFIXED PLAN); OPEN agent_cursor; FETCH NEXT FROM agent_cursor INTO @session_id ,@job_id ,@step_id; WHILE @@FETCH_STATUS = 0 BEGIN ; BEGIN TRY ; DECLARE @job_name SYSNAME; SET @job_name = NULL; DECLARE @step_name SYSNAME; SET @step_name = NULL; SELECT @job_name = 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(j.NAME, 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'?') ,@step_name = 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(s.step_name, 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'?') FROM msdb.dbo.sysjobs AS j INNER JOIN msdb..sysjobsteps AS s ON j.job_id = s.job_id WHERE j.job_id = @job_id AND s.step_id = @step_id; IF @job_name IS NOT NULL BEGIN ; UPDATE s SET additional_info.modify(' insert text{sql:variable("@job_name")} into (/additional_info/agent_job_info/job_name)[1] ') FROM #sessions AS s WHERE s.session_id = @session_id OPTION (KEEPFIXED PLAN); UPDATE s SET additional_info.modify(' insert text{sql:variable("@step_name")} into (/additional_info/agent_job_info/step_name)[1] ') FROM #sessions AS s WHERE s.session_id = @session_id OPTION (KEEPFIXED PLAN); END; END TRY BEGIN CATCH ; DECLARE @msdb_error_message NVARCHAR(256); SET @msdb_error_message = ERROR_MESSAGE(); UPDATE s SET additional_info.modify(' insert <msdb_query_error>{sql:variable("@msdb_error_message")}</msdb_query_error> as last into (/additional_info/agent_job_info)[1] ') FROM #sessions AS s WHERE s.session_id = @session_id AND s.recursion = 1 OPTION (KEEPFIXED PLAN); END CATCH; FETCH NEXT FROM agent_cursor INTO @session_id ,@job_id ,@step_id; END; CLOSE agent_cursor; DEALLOCATE agent_cursor; END;
No comments:
Post a Comment