Hello every body in the previous post we figured more detail about How to monitor and mange your SQL Server jobs ..? but now all thing What we Covered in the Previous Post ..? we Covered 10 Point
- Check SQL Server jobs First Vision..?
- Check jobs Status ..? Is it enabled or Disabled ..?
- When was SQL agent job was created or when was last time it was modified..?
- Identify newly created SQL Server Agent Jobs
- Check enabled jobs Without notification setup ..?
- retrieving enabled operators in SQL Server Agent
- Update SQL Server Agent Jobs without any notification by New notification
- SQL Server Agent Job Setup and Configuration Information..
- Check jobs With Enabled Schedule ..
- Check SQL Server Agent Job Schedule Information..
and i will going today to complete this Subject by Covering another Impressive point :
- Configuring SQL Agent Jobs to Write to Windows Event Log.
- Generate SQL Agent Job Schedule Report
- SQL Server Agent Job Setup and Configuration Information
- SQL Server Agent Job Steps Execution Information
- Jobs Report by OnSuccessAction and on_fail_action
- Check or Change job owner
- List by jobs are ruining now on your DB Server.
- Jobs With Execution Long Time .
- Select Failed Job
- How to search on your Jobs TEXT.
let’ s drill down to figure this 10 new point one by one .
- Configuring SQL Agent Jobs to Write to Windows Event Log.
at the first we need to know the jobs not configured to write in the event log
WHERE [notify_level_eventlog] = 0 |
Let’s Configured this job to write in the Event log
SET [notify_level_eventlog] = 2 |
- Generate SQL Agent Job Schedule Report
by this report we can figured the
Name : Job Name
active_start_date : Start time for the job Execute.
ScheduleDscr : Description for the job Schedule
enabled : IF = 1 (job Enabled ) IF = 0 (Job Disable)
to generate this report we have 2 Steps First one Create Function , Second one the DMV using CTE (Conman Table Expression )
CREATE FUNCTION [dbo].[udf_schedule_description] (@freq_type INT , |
@freq_subday_interval INT , |
@freq_relative_interval INT , |
@freq_recurrence_factor INT , |
DECLARE @schedule_description NVARCHAR(255) |
DECLARE @idle_cpu_percent INT |
DECLARE @idle_cpu_duration INT |
SELECT @schedule_description = N 'Once on ' + CONVERT (NVARCHAR, @active_start_date) + N ' at ' + CONVERT (NVARCHAR, cast ((@active_start_time / 10000) as varchar (10)) + ':' + right ( '00' + cast ((@active_start_time % 10000) / 100 as varchar (10)),2)) |
RETURN @schedule_description |
SELECT @schedule_description = N 'Every day ' |
SELECT @schedule_description = N 'Every ' + CONVERT (NVARCHAR, @freq_recurrence_factor) + N ' week(s) on ' |
IF (@freq_interval & POWER(2, @loop - 1) = POWER(2, @loop - 1)) |
SELECT @schedule_description = @schedule_description + DATENAME(dw, N '1996120' + CONVERT (NVARCHAR, @loop)) + N ', ' |
IF ( RIGHT (@schedule_description, 2) = N ', ' ) |
SELECT @schedule_description = SUBSTRING (@schedule_description, 1, (DATALENGTH(@schedule_description) / 2) - 2) + N ' ' |
SELECT @schedule_description = N 'Every ' + CONVERT (NVARCHAR, @freq_recurrence_factor) + N ' months(s) on day ' + CONVERT (NVARCHAR, @freq_interval) + N ' of that month ' |
SELECT @schedule_description = N 'Every ' + CONVERT (NVARCHAR, @freq_recurrence_factor) + N ' months(s) on the ' |
SELECT @schedule_description = @schedule_description + |
CASE @freq_relative_interval |
WHEN 0x02 THEN N 'second ' |
WHEN 0x08 THEN N 'fourth ' |
WHEN (@freq_interval > 00) |
AND (@freq_interval < 08) THEN DATENAME(dw, N '1996120' + CONVERT (NVARCHAR, @freq_interval)) |
WHEN (@freq_interval = 08) THEN N 'day' |
WHEN (@freq_interval = 09) THEN N 'week day' |
WHEN (@freq_interval = 10) THEN N 'weekend day' |
SELECT @schedule_description = FORMATMESSAGE(14579) |
RETURN @schedule_description |
EXECUTE master.dbo.xp_instance_regread N 'HKEY_LOCAL_MACHINE' , |
N 'SOFTWARE\Microsoft\MSSQLServer\SQLServerAgent' , |
@idle_cpu_percent OUTPUT , |
EXECUTE master.dbo.xp_instance_regread N 'HKEY_LOCAL_MACHINE' , |
N 'SOFTWARE\Microsoft\MSSQLServer\SQLServerAgent' , |
@idle_cpu_duration OUTPUT , |
SELECT @schedule_description = FORMATMESSAGE(14578, ISNULL (@idle_cpu_percent, 10), ISNULL (@idle_cpu_duration, 600)) |
RETURN @schedule_description |
SELECT @schedule_description = @schedule_description + |
WHEN 0x1 THEN N 'at ' + CONVERT (NVARCHAR, cast ((@active_start_time / 10000) as varchar (10)) + ':' + right ( '00' + cast ((@active_start_time % 10000) / 100 as varchar (10)),2)) |
WHEN 0x2 THEN N 'every ' + CONVERT (NVARCHAR, @freq_subday_interval) + N ' second(s)' |
WHEN 0x4 THEN N 'every ' + CONVERT (NVARCHAR, @freq_subday_interval) + N ' minute(s)' |
WHEN 0x8 THEN N 'every ' + CONVERT (NVARCHAR, @freq_subday_interval) + N ' hour(s)' |
IF (@freq_subday_type IN (0x2, 0x4, 0x8)) |
SELECT @schedule_description = @schedule_description + N ' between ' + |
CONVERT (NVARCHAR, cast ((@active_start_time / 10000) as varchar (10)) + ':' + right ( '00' + cast ((@active_start_time % 10000) / 100 as varchar (10)),2) ) + N ' and ' + CONVERT (NVARCHAR, cast ((@active_end_time / 10000) as varchar (10)) + ':' + right ( '00' + cast ((@active_end_time % 10000) / 100 as varchar (10)),2) ) |
RETURN @schedule_description |
SELECT dbo.sysjobs. name , CAST (dbo.sysschedules.active_start_time / 10000 AS VARCHAR (10)) |
+ ':' + RIGHT ( '00' + CAST (dbo.sysschedules.active_start_time % 10000 / 100 AS VARCHAR (10)), 2) AS active_start_time, |
dbo.udf_schedule_description(dbo.sysschedules.freq_type, |
dbo.sysschedules.freq_interval, |
dbo.sysschedules.freq_subday_type, |
dbo.sysschedules.freq_subday_interval, |
dbo.sysschedules.freq_relative_interval, |
dbo.sysschedules.freq_recurrence_factor, |
dbo.sysschedules.active_start_date, |
dbo.sysschedules.active_end_date, |
dbo.sysschedules.active_start_time, |
dbo.sysschedules.active_end_time) AS ScheduleDscr, dbo.sysjobs.enabled |
FROM dbo.sysjobs INNER JOIN |
dbo.sysjobschedules ON dbo.sysjobs.job_id = dbo.sysjobschedules.job_id INNER JOIN |
dbo.sysschedules ON dbo.sysjobschedules.schedule_id = dbo.sysschedules.schedule_id |
where ScheduleDscr Like '%DAY%' |
- Information for SQL Server Job Configuration
by this Script we can now all things bout our job Configuration
[sJOB].[job_id] AS [JobID] |
, [sJOB].[ name ] AS [JobName] |
, [sDBP].[ name ] AS [JobOwner] |
, [sCAT].[ name ] AS [JobCategory] |
, [sJOB].[description] AS [JobDescription] |
, [sJOB].[date_created] AS [JobCreatedOn] |
, [sJOB].[date_modified] AS [JobLastModifiedOn] |
, [sSVR].[ name ] AS [OriginatingServerName] |
, [sJSTP].[step_id] AS [JobStartStepNo] |
, [sJSTP].[step_name] AS [JobStartStepName] |
WHEN [sSCH].[schedule_uid] IS NULL THEN 'No' |
, [sSCH].[schedule_uid] AS [JobScheduleID] |
, [sSCH].[ name ] AS [JobScheduleName] |
, CASE [sJOB].[delete_level] |
WHEN 3 THEN 'On Completion' |
END AS [JobDeletionCriterion] |
[msdb].[dbo].[sysjobs] AS [sJOB] |
LEFT JOIN [msdb].[sys].[servers] AS [sSVR] |
ON [sJOB].[originating_server_id] = [sSVR].[server_id] |
LEFT JOIN [msdb].[dbo].[syscategories] AS [sCAT] |
ON [sJOB].[category_id] = [sCAT].[category_id] |
LEFT JOIN [msdb].[dbo].[sysjobsteps] AS [sJSTP] |
ON [sJOB].[job_id] = [sJSTP].[job_id] |
AND [sJOB].[start_step_id] = [sJSTP].[step_id] |
LEFT JOIN [msdb].[sys].[database_principals] AS [sDBP] |
ON [sJOB].[owner_sid] = [sDBP].[sid] |
LEFT JOIN [msdb].[dbo].[sysjobschedules] AS [sJOBSCH] |
ON [sJOB].[job_id] = [sJOBSCH].[job_id] |
LEFT JOIN [msdb].[dbo].[sysschedules] AS [sSCH] |
ON [sJOBSCH].[schedule_id] = [sSCH].[schedule_id] |
- SQL Server Agent Job Steps Execution Information
by this Script we can find all info related to the Steps and the Execution
[sJOB].[job_id] AS [JobID] |
, [sJOB].[ name ] AS [JobName] |
, [sJSTP].[step_uid] AS [StepID] |
, [sJSTP].[step_id] AS [StepNo] |
, [sJSTP].[step_name] AS [StepName] |
, CASE [sJSTP].[subsystem] |
WHEN 'ActiveScripting' THEN 'ActiveX Script' |
WHEN 'CmdExec' THEN 'Operating system (CmdExec)' |
WHEN 'PowerShell' THEN 'PowerShell' |
WHEN 'Distribution' THEN 'Replication Distributor' |
WHEN 'Merge' THEN 'Replication Merge' |
WHEN 'QueueReader' THEN 'Replication Queue Reader' |
WHEN 'Snapshot' THEN 'Replication Snapshot' |
WHEN 'LogReader' THEN 'Replication Transaction-Log Reader' |
WHEN 'ANALYSISCOMMAND' THEN 'SQL Server Analysis Services Command' |
WHEN 'ANALYSISQUERY' THEN 'SQL Server Analysis Services Query' |
WHEN 'SSIS' THEN 'SQL Server Integration Services Package' |
WHEN 'TSQL' THEN 'Transact-SQL script (T-SQL)' |
, [sPROX].[ name ] AS [RunAs] |
, [sJSTP].[database_name] AS [ Database ] |
, [sJSTP].[command] AS [ExecutableCommand] |
, CASE [sJSTP].[on_success_action] |
WHEN 1 THEN 'Quit the job reporting success' |
WHEN 2 THEN 'Quit the job reporting failure' |
WHEN 3 THEN 'Go to the next step' |
WHEN 4 THEN 'Go to Step: ' |
+ QUOTENAME( CAST ([sJSTP].[on_success_step_id] AS VARCHAR (3))) |
, [sJSTP].[retry_attempts] AS [RetryAttempts] |
, [sJSTP].[retry_interval] AS [RetryInterval (Minutes)] |
, CASE [sJSTP].[on_fail_action] |
WHEN 1 THEN 'Quit the job reporting success' |
WHEN 2 THEN 'Quit the job reporting failure' |
WHEN 3 THEN 'Go to the next step' |
WHEN 4 THEN 'Go to Step: ' |
+ QUOTENAME( CAST ([sJSTP].[on_fail_step_id] AS VARCHAR (3))) |
[msdb].[dbo].[sysjobsteps] AS [sJSTP] |
INNER JOIN [msdb].[dbo].[sysjobs] AS [sJOB] |
ON [sJSTP].[job_id] = [sJOB].[job_id] |
LEFT JOIN [msdb].[dbo].[sysjobsteps] AS [sOSSTP] |
ON [sJSTP].[job_id] = [sOSSTP].[job_id] |
AND [sJSTP].[on_success_step_id] = [sOSSTP].[step_id] |
LEFT JOIN [msdb].[dbo].[sysjobsteps] AS [sOFSTP] |
ON [sJSTP].[job_id] = [sOFSTP].[job_id] |
AND [sJSTP].[on_fail_step_id] = [sOFSTP].[step_id] |
LEFT JOIN [msdb].[dbo].[sysproxies] AS [sPROX] |
ON [sJSTP].[proxy_id] = [sPROX].[proxy_id] |
ORDER BY [JobName], [StepNo] |
- Jobs Report by OnSuccessAction and on_fail_action
CASE [sJSTP].[on_success_action] |
WHEN 1 THEN 'Quit the job reporting success' |
WHEN 2 THEN 'Quit the job reporting failure' |
WHEN 3 THEN 'Go to the next step' |
WHEN 4 THEN 'Go to Step: ' |
+ QUOTENAME( CAST ([sJSTP].[on_success_step_id] AS VARCHAR (3))) |
, CASE [sJSTP].[on_fail_action] |
WHEN 1 THEN 'Quit the job reporting success' |
WHEN 2 THEN 'Quit the job reporting failure' |
WHEN 3 THEN 'Go to the next step' |
WHEN 4 THEN 'Go to Step: ' |
+ QUOTENAME( CAST ([sJSTP].[on_fail_step_id] AS VARCHAR (3))) |
,[sJOB].[ name ] AS [JobName] , |
[sJSTP].[step_id] AS [StepNo] |
, [sJSTP].[step_name] AS [StepName] |
, CASE [sJSTP].[subsystem] |
WHEN 'ActiveScripting' THEN 'ActiveX Script' |
WHEN 'CmdExec' THEN 'Operating system (CmdExec)' |
WHEN 'PowerShell' THEN 'PowerShell' |
WHEN 'Distribution' THEN 'Replication Distributor' |
WHEN 'Merge' THEN 'Replication Merge' |
WHEN 'QueueReader' THEN 'Replication Queue Reader' |
WHEN 'Snapshot' THEN 'Replication Snapshot' |
WHEN 'LogReader' THEN 'Replication Transaction-Log Reader' |
WHEN 'ANALYSISCOMMAND' THEN 'SQL Server Analysis Services Command' |
WHEN 'ANALYSISQUERY' THEN 'SQL Server Analysis Services Query' |
WHEN 'SSIS' THEN 'SQL Server Integration Services Package' |
WHEN 'TSQL' THEN 'Transact-SQL script (T-SQL)' |
[msdb].[dbo].[sysjobsteps] AS [sJSTP] |
INNER JOIN [msdb].[dbo].[sysjobs] AS [sJOB] |
ON [sJSTP].[job_id] = [sJOB].[job_id] |
LEFT JOIN [msdb].[dbo].[sysjobsteps] AS [sOSSTP] |
ON [sJSTP].[job_id] = [sOSSTP].[job_id] |
AND [sJSTP].[on_success_step_id] = [sOSSTP].[step_id] |
LEFT JOIN [msdb].[dbo].[sysjobsteps] AS [sOFSTP] |
ON [sJSTP].[job_id] = [sOFSTP].[job_id] |
AND [sJSTP].[on_fail_step_id] = [sOFSTP].[step_id] |
LEFT JOIN [msdb].[dbo].[sysproxies] AS [sPROX] |
ON [sJSTP].[proxy_id] = [sPROX].[proxy_id] |
Where [sJSTP].[on_fail_action] = 1 |
ORDER BY [JobName], [StepNo] |
<li><strong> Check or Change job owner</strong></li> |
IF you have 50 job on your DB Server and you need to change the Job owner one by one it will take more time so we will do DMV to manage this issue |
msdb.dbo.sysjobs_view AS sv |
INNER JOIN [master].[sys].[syslogins] l ON sv.owner_sid = l.sid |
After we check the job owner now we need to change this job owner by anther one
DECLARE @Jobname Nvarchar |
DECLARE @NewOwner varchar (200) |
DECLARE @OldName varchar (200) |
SET @NewOwner = 'New User Name' |
msdb.dbo.sysjobs_view AS sv |
INNER JOIN [master].[sys].[syslogins] l ON sv.owner_sid = l.sid |
WHERE l. name like @OldName |
WHILE ( SELECT COUNT (*) FROM #SQLJobs ) > 0 BEGIN |
SELECT TOP 1 @JobID = JobID FROM #SQLJobs |
EXEC msdb.dbo.sp_update_job @job_id= @JobID, |
@owner_login_name=@NewOwner |
DELETE FROM #SQLJobs WHERE JobID = @JobID |
- List by jobs are ruining now on your DB Server.
FROM tempdb.dbo.sysobjects |
WHERE id = OBJECT_ID(N '[tempdb].[dbo].[Temp1]' ) |
DROP TABLE [tempdb].[dbo].[Temp1] |
CREATE TABLE [tempdb].[dbo].[Temp1] |
job_id uniqueidentifier NOT NULL , |
last_run_date nvarchar (20) NOT NULL , |
last_run_time nvarchar (20) NOT NULL , |
next_run_date nvarchar (20) NOT NULL , |
next_run_time nvarchar (20) NOT NULL , |
next_run_schedule_id INT NOT NULL , |
requested_to_run INT NOT NULL , |
request_source INT NOT NULL , |
request_source_id sysname |
COLLATE database_default NULL , |
current_step INT NOT NULL , |
current_retry_attempt INT NOT NULL , |
DECLARE @job_owner sysname |
SET @is_sysadmin = isnull (is_srvrolemember ( 'sysadmin' ), 0) |
SET @job_owner = suser_sname () |
INSERT INTO [tempdb].[dbo].[Temp1] |
EXECUTE master.dbo.xp_sqlagent_enum_jobs @is_sysadmin, @job_owner |
UPDATE [tempdb].[dbo].[Temp1] |
SET last_run_time = right ( '000000' + last_run_time, 6), |
next_run_time = right ( '000000' + next_run_time, 6); |
SELECT j. name AS JobName, |
coalesce (x.current_step, 0) AS CurrentStepNbr, |
substring (x.last_run_date, 1, 4) |
+ substring (x.last_run_date, 5, 2) |
+ substring (x.last_run_date, 7, 2) |
+ substring (x.last_run_time, 1, 2) |
+ substring (x.last_run_time, 3, 2) |
+ substring (x.last_run_time, 5, 2) |
WHEN 4 THEN 'In progress' |
(h.run_duration / 1000000) * (3600 * 24) |
+ (h.run_duration / 10000 % 100) * 3600 |
+ (h.run_duration / 100 % 100) * 60 |
FROM [tempdb].[dbo].[Temp1] x |
ON j.category_id = c.category_id |
AND x.last_run_date = h.run_date |
AND x.last_run_time = h.run_time |
,Next_Run_Schedule_ID INT |
,Request_Source_ID VARCHAR (100) |
,Current_Retry_Attempt INT |
EXEC master.dbo.xp_sqlagent_enum_jobs 1 |
,ja.run_requested_date AS last_run_date |
,(DATEDIFF(mi, ja.run_requested_date, GETDATE()) |
, CASE LEN( CONVERT ( VARCHAR (5), DATEDIFF(MI, JA. |
RUN_REQUESTED_DATE, GETDATE()) / 60)) |
THEN '0' + CONVERT ( VARCHAR (5), DATEDIFF(mi, ja. |
run_requested_date, GETDATE()) / 60 |
ELSE CONVERT ( VARCHAR (5), DATEDIFF(mi, ja. |
run_requested_date, GETDATE()) / 60) |
END + ':' + CASE LEN( CONVERT ( VARCHAR (5), ( |
DATEDIFF(MI, JA.RUN_REQUESTED_DATE, |
THEN '0' + CONVERT ( VARCHAR (5), ( |
run_requested_date, GETDATE() |
ELSE CONVERT ( VARCHAR (5), ( |
DATEDIFF(mi, ja.run_requested_date, |
END + ':' + CASE LEN( CONVERT ( VARCHAR (5), ( |
DATEDIFF(SS, JA.RUN_REQUESTED_DATE, |
THEN '0' + CONVERT ( VARCHAR (5), ( |
run_requested_date, GETDATE() |
ELSE CONVERT ( VARCHAR (5), ( |
DATEDIFF(ss, ja.run_requested_date, |
FROM msdb.dbo.sysjobactivity AS ja |
LEFT OUTER JOIN msdb.dbo.sysjobhistory AS jh ON ja. |
job_history_id = jh.instance_id |
INNER JOIN msdb.dbo.sysjobs_view AS j ON ja.job_id = j.job_id |
SELECT MAX (session_id) AS EXPR1 |
FROM msdb.dbo.sysjobactivity |
) R ON R.job_id = a.Job_Id |
- Jobs With Execution Long Time
DECLARE @HistoryStartDate datetime |
,@HistoryEndDate datetime |
SET @HistoryStartDate = '19000101' |
SET @HistoryEndDate = GETDATE() |
SET @MinHistExecutions = 1.0 |
SET @MinAvgSecsDuration = 1.0 |
DECLARE @currently_running_jobs TABLE ( |
job_id UNIQUEIDENTIFIER NOT NULL |
,last_run_date INT NOT NULL |
,last_run_time INT NOT NULL |
,next_run_date INT NOT NULL |
,next_run_time INT NOT NULL |
,next_run_schedule_id INT NOT NULL |
,requested_to_run INT NOT NULL |
,request_source INT NOT NULL |
,request_source_id SYSNAME NULL |
,current_step INT NOT NULL |
,current_retry_attempt INT NOT NULL |
INSERT INTO @currently_running_jobs |
EXECUTE master.dbo.xp_sqlagent_enum_jobs 1, '' |
,date_executed=msdb.dbo.agent_datetime(run_date, run_time) |
,secs_duration=run_duration/10000*3600 |
+run_duration%10000/100*60 |
FROM msdb.dbo.sysjobhistory |
,AvgDuration = AVG (secs_duration*1.) |
,AvgPlus2StDev = AVG (secs_duration*1.) + 2*stdevp(secs_duration) |
WHERE date_executed >= DATEADD( day , DATEDIFF( day , '19000101' ,@HistoryStartDate), '19000101' ) |
AND date_executed < DATEADD( day , 1 + DATEDIFF( day , '19000101' ,@HistoryEndDate), '19000101' ) GROUP BY job_id HAVING COUNT (*) >= @MinHistExecutions |
AND AVG (secs_duration*1.) >= @MinAvgSecsDuration |
, MAX (act.start_execution_date) AS [ExecutionDate] |
,AvgDuration AS [Historical Avg Duration (secs)] |
,AvgPlus2StDev AS [ Min Threshhold (secs)] |
JOIN JobHistStats jhs on jd.job_id = jhs.job_id |
JOIN msdb..sysjobs j on jd.job_id = j.job_id |
JOIN @currently_running_jobs crj ON crj.job_id = jd.job_id |
JOIN msdb..sysjobactivity AS act ON act.job_id = jd.job_id |
AND act.stop_execution_date IS NULL |
AND act.start_execution_date IS NOT NULL |
WHERE secs_duration > AvgPlus2StDev |
AND DATEDIFF(SS, act.start_execution_date, GETDATE()) > AvgPlus2StDev |
GROUP BY jd.job_id, j. name , AvgDuration, AvgPlus2StDev |
select J. Name ,JH.Run_Status,JH.Message, |
convert (datetime, rtrim(JH.run_date)) |
+ ((JH.run_time/10000 * 3600) |
+ ((JH.run_time%10000)/100*60) |
+ (JH.run_time%10000)%100) / (86399.9964 ) as run_datetime |
,* from msdb..sysjobs J inner join msdb..sysjobhistory JH |
- How to search on your Jobs TEXT.
You can find my post ( Which Job Executed my Stored Procedures..? ) about this point
Now we Finished the Part of How to monitor and mange your SQL Server jobs ..? after we Covered 20 Point with more than 20 Script
Point Covered in the 2 posts of How to manage and Monitor SQL Server Jobs
- Check SQL Server jobs First Vision..?
- Check jobs Status ..? Is it enabled or Disabled ..?
- When was SQL agent job was created or when was last time it was modified..?
- Identify newly created SQL Server Agent Jobs
- Check enabled jobs Without notification setup ..?
- retrieving enabled operators in SQL Server Agent
- Update SQL Server Agent Jobs without any notification by New notification
- SQL Server Agent Job Setup and Configuration Information..
- Check jobs With Enabled Schedule ..
- Check SQL Server Agent Job Schedule Information.
- Configuring SQL Agent Jobs to Write to Windows Event Log.
- Generate SQL Agent Job Schedule Report
- SQL Server Agent Job Setup and Configuration Information
- SQL Server Agent Job Steps Execution Information
- Jobs Report by OnSuccessAction and on_fail_action
- Check or Change job owner
- List by jobs are ruining now on your DB Server.
- Jobs With Execution Long Time .
- Select Failed Job
- How to search on your Jobs TEXT.
Follow Me
Mostafa Elmasry
Like this:
Like Loading...
Related
Published by Mustafa EL-Masry
I am Microsoft database consultant working as a Database administrator for more than +10 Years I have very good knowledge about Database Migration, Consolidation, Performance Tuning, Automation Using T-SQL, and PowerShell and so many other tasks I do it in multiple customers here in KSA and as of now, I am working in Bank Albilad managing the core banking system that is hosted in SQL Server Database 8 TB. Also, I am Microsoft certified 2008 and 2016 in SQL Server (2x MCTS, 2x MCTIP, MCSA, MCSE) and I am Microsoft Certified Trainer (MCT) also I am azure Certified (AZ-900, AZ-103) also I was awarded by Microsoft Azure Heroes 3 times as (Azure Content hero, Azure Community hero and Azure Mentor) For more information check my page
https://mostafaelmasry.com/about-me/
View all posts by Mustafa EL-Masry