You could use this to get the duration of the job(s) to check the SQL part of it.As Kristen said though: if it is taking hours then you are doing something wrong.SELECT sj.[name] AS [Job Name] , CASE WHEN sj.[enabled] = 1 THEN 'Normal' WHEN sj.[enabled] = 0 THEN 'DISABLED' WHEN sj.[enabled] IS NULL THEN 'NO JOB SET UP!' END AS [Job Status] , ISNULL(CONVERT(CHAR(11), sja.[start], 106), '') AS [Last Run Date] , ISNULL(CONVERT(CHAR(5), sja.[start], 108), '') AS [Last Run Time] , ISNULL(STUFF(CONVERT(CHAR(8), DATEADD(SS, sja.[duration] % 86400, 0), 8), 1, 2, CAST(sja.[duration] / 3600 AS VARCHAR(12))), '') AS [Duration]FROM msdb.dbo.sysJobs sj LEFT JOIN ( SELECT [job_Id] AS [jobID] , [start_execution_date] AS [start] , [stop_execution_date] AS [stop] , DATEDIFF(SS, [start_execution_date] , [stop_execution_date]) AS [duration] , [last_executed_step_Id] AS [lastStep] , ROW_NUMBER() OVER (PARTITION BY [job_ID] ORDER BY [start_execution_date] DESC) AS [pos] FROM msdb.dbo.sysJobActivity ) sja ON sja.[jobId] = sj.[job_Id] AND sja.[pos] = 1
Charlie===============================================================Msg 3903, Level 16, State 1, Line 1736The ROLLBACK TRANSACTION request has no corresponding BEGIN TRANSACTION