|
|
|
SSChasing Mays
Group: Moderators
Last Login: Tuesday, May 07, 2013 3:54 PM
Points: 608,
Visits: 379
|
|
There is plenty of job history plus I archive all job history off to another server.
http://www.sqlserverio.com http://www.cactuss.org http://www.salssa.org
|
|
|
|
|
Ten Centuries
      
Group: General Forum Members
Last Login: Yesterday @ 11:27 AM
Points: 1,407,
Visits: 2,020
|
|
If it's showing up in the history, then it sounds like it's running.
Perhaps it's immediatly failing, or starting then immediatly stopping?
If you drill down into the details of one of the history rows, you can perhaps get a little information.
I've found you get a lot more information about failures (or just general troubleshooting information) if you specify an output file in the advanced page in the job step properties window.
Might try that and see if you get any useful information about what its doing.
Jason Shadonix MCTS, SQL 2005
|
|
|
|
|
SSChasing Mays
Group: Moderators
Last Login: Tuesday, May 07, 2013 3:54 PM
Points: 608,
Visits: 379
|
|
The job didn't fail it simply didn't execute at all. There is no entry for the time it was suppose to execute in the job history at all.
http://www.sqlserverio.com http://www.cactuss.org http://www.salssa.org
|
|
|
|
|
Grasshopper
      
Group: General Forum Members
Last Login: Wednesday, January 07, 2009 8:26 AM
Points: 23,
Visits: 2
|
|
| What other jobs are running on that server? I had a similar problem a while back and found that another job, scheduled to start 5 minutes before mine, ran long causing the agent to 'skip' my job. I know servers are supposed to be able to multitask, but just for grins and giggles I rescheduled my job for 5 minutes before the other job's scheduled start time. That seemed to work like a charm - never had another 'skip'!
|
|
|
|
|
SSChasing Mays
Group: Moderators
Last Login: Tuesday, May 07, 2013 3:54 PM
Points: 608,
Visits: 379
|
|
This server has about 50 jobs on it some run as frequently as every 10 minutes.
http://www.sqlserverio.com http://www.cactuss.org http://www.salssa.org
|
|
|
|
|
Ten Centuries
      
Group: General Forum Members
Last Login: Yesterday @ 11:27 AM
Points: 1,407,
Visits: 2,020
|
|
Anything interesting in the Windows event log, or the SQL logs for the time that this happened? Or didn't happen as the cas may be...
Jason Shadonix MCTS, SQL 2005
|
|
|
|
|
SSC Rookie
      
Group: General Forum Members
Last Login: Wednesday, May 08, 2013 9:47 AM
Points: 49,
Visits: 79
|
|
Hi,
We have had a similar issue to this in SQL Server 2008,
has anyone found out why this would occur?
Regards
|
|
|
|
|
SSC Rookie
      
Group: General Forum Members
Last Login: Wednesday, April 17, 2013 8:51 AM
Points: 41,
Visits: 162
|
|
I am experiencing the same issue with SQL Server 2008 R2. The job will execute and you can see it in the history, but the run time is typically less than 10 seconds and the code itself did not execute. Actually, some of the code is executing, but not all of it. Strange as hell. And it is infrequent. Some days it works, some days it doesn't. Here is one of the jobs that is showing this behavior:
DECLARE @Threads INT = 5 DECLARE @ReorgThreshold INT = 30 DECLARE @Rows BIGINT = 10000 DECLARE @ByPassGetStats BIT = 0 DECLARE @ByPassDefrag BIT = 0 DECLARE @DatabaseID INT; DECLARE @DatabaseName VARCHAR(255); DECLARE @TableName VARCHAR(255); DECLARE @SchemaName VARCHAR(255); DECLARE @ThreadCounter INT; DECLARE @SQL NVARCHAR(4000);
CREATE TABLE #IndexFrag ( DatabaseName VARCHAR(255) NULL, ObjectID INT, IndexID INT, PartitionNumber INT, FragmentationPerc FLOAT, Pages INT, Records BIGINT, IndexName VARCHAR(255), SchemaName VARCHAR(255), TableName VARCHAR(255), AllowPageLocks INT);
CREATE TABLE #TableList ( DatabaseName VARCHAR(255) NULL, SchemaName VARCHAR(255) NULL, TableName VARCHAR(255) NULL, Records BIGINT );
IF @ByPassGetStats = 0 BEGIN --Get the index fragmentation DECLARE ReorgIndexCursor01 CURSOR FOR SELECT [name], database_id FROM master.sys.databases WHERE [name] NOT IN ('master', 'model', 'tempdb') ORDER BY [name];
OPEN ReorgIndexCursor01;
FETCH NEXT FROM ReorgIndexCursor01 INTO @DatabaseName, @DatabaseID;
WHILE @@FETCH_STATUS = 0 BEGIN INSERT INTO #IndexFrag (DatabaseName, ObjectID, IndexID, PartitionNumber, FragmentationPerc, Pages, Records) SELECT @DatabaseName, ps.OBJECT_ID, ps.index_id, ps.partition_number, ps.avg_fragmentation_in_percent, ps.page_count, ps.record_count FROM master.sys.dm_db_index_physical_stats (@DatabaseID, NULL, NULL , NULL, N'SAMPLED') ps WHERE ps.index_id > 0 OPTION (MaxDop 1); --Update the table with the schema, table, and index names SELECT @SQL = 'USE [' + @DatabaseName + ']
UPDATE #IndexFrag SET IndexName = i.name, SchemaName = s.name, TableName = o.name, AllowPageLocks = i.allow_page_locks FROM #IndexFrag ti INNER JOIN sys.objects o ON ti.ObjectID = o.object_id INNER JOIN sys.schemas s ON o.schema_id = s.schema_id INNER JOIN sys.indexes i ON o.object_id = i.object_id WHERE ti.DatabaseName = ' + CHAR(39) + @DatabaseName + CHAR(39) + ' AND i.index_id = ti.IndexID '; EXEC (@SQL);
FETCH NEXT FROM ReorgIndexCursor01 INTO @DatabaseName, @DatabaseID; END CLOSE ReorgIndexCursor01; DEALLOCATE ReorgIndexCursor01; --Update the PNGCORP_IndexList table UPDATE msdb.dbo.PNGCORP_IndexList SET FragmentationPerc = f.FragmentationPerc, Pages = f.Pages, Records = f.Records, LastChecked = GETDATE() FROM #IndexFrag f INNER JOIN msdb.dbo.PNGCORP_IndexList il ON il.DatabaseName = f.DatabaseName AND il.ObjectID = f.ObjectID AND il.IndexID = f.IndexID AND il.PartitionNumber = f.PartitionNumber; --Insert new indexes into the PNGCORP_IndexList INSERT INTO msdb.dbo.PNGCORP_IndexList (DatabaseName, ObjectID, IndexID, PartitionNumber, FragmentationPerc, Pages, Records, IndexName, SchemaName, TableName, AllowPageLocks, LastChecked) SELECT DatabaseName, ObjectID, IndexID, PartitionNumber, FragmentationPerc, Pages, Records, IndexName, SchemaName, TableName, AllowPageLocks, GETDATE() FROM #IndexFrag f WHERE ( SELECT COUNT(*) FROM msdb.dbo.PNGCORP_IndexList il WHERE il.DatabaseName = f.DatabaseName AND il.ObjectID = f.ObjectID AND il.IndexID = f.IndexID AND il.PartitionNumber = f.PartitionNumber) = 0; END --Get the tables we need to reindex INSERT INTO #TableList (DatabaseName, SchemaName, TableName, Records) SELECT DatabaseName, SchemaName, TableName, MAX(Records) FROM msdb.dbo.PNGCORP_IndexList WHERE FragmentationPerc >= @ReorgThreshold AND Records >= @Rows GROUP BY DatabaseName, SchemaName, TableName ORDER BY MAX(Records) DESC --Cycle through the problem indexes and insert them into the PNGCORP_IndexReorg# tables. SET @ThreadCounter = 1; IF @Threads > 5 SET @Threads = 5; TRUNCATE TABLE msdb.dbo.PNGCORP_IndexReorg1; TRUNCATE TABLE msdb.dbo.PNGCORP_IndexReorg2; TRUNCATE TABLE msdb.dbo.PNGCORP_IndexReorg3; TRUNCATE TABLE msdb.dbo.PNGCORP_IndexReorg4; TRUNCATE TABLE msdb.dbo.PNGCORP_IndexReorg5;
DECLARE ReorgIndexCursor02 CURSOR FOR SELECT DatabaseName, SchemaName, TableName FROM #TableList ORDER BY Records DESC;
OPEN ReorgIndexCursor02;
FETCH NEXT FROM ReorgIndexCursor02 INTO @DatabaseName, @SchemaName, @TableName;
WHILE @@FETCH_STATUS = 0 BEGIN SET @SQL = ' INSERT INTO msdb.dbo.PNGCORP_IndexReorg' + CAST(@ThreadCounter AS VARCHAR(1)) + ' (DatabaseName, SchemaName, TableName, IndexName, AllowPageLocks) SELECT DISTINCT i.DatabaseName, i.SchemaName, i.TableName, i.IndexName, i.AllowPageLocks FROM msdb.dbo.PNGCORP_IndexList i INNER JOIN #TableList t ON t.DatabaseName = i.DatabaseName AND t.SchemaName = i.SchemaName AND t.TableName = i.TableName WHERE i.DatabaseName = ''' + @DatabaseName + ''' AND i.SchemaName = ''' + @SchemaName + ''' AND i.TableName = ''' + @TableName + ''' AND i.FragmentationPerc >= ' + CAST(@ReorgThreshold AS VARCHAR(25)) + ' AND i.Records >= ' + CAST(@Rows AS VARCHAR(25)) + '; ';
EXEC (@SQL);
SET @ThreadCounter = @ThreadCounter + 1; IF @ThreadCounter > @Threads SET @ThreadCounter = 1;
FETCH NEXT FROM ReorgIndexCursor02 INTO @DatabaseName, @SchemaName, @TableName; END CLOSE ReorgIndexCursor02; DEALLOCATE ReorgIndexCursor02;
DROP TABLE #TableList; DROP TABLE #IndexFrag;
--Start the index jobs IF @ByPassDefrag = 0 BEGIN EXEC msdb.dbo.sp_start_job @Job_Name = 'Database Maintenance.IndexReorg1'; IF @Threads >= 2 EXEC msdb.dbo.sp_start_job @Job_Name = 'Database Maintenance.IndexReorg2'; IF @Threads >= 3 EXEC msdb.dbo.sp_start_job @Job_Name = 'Database Maintenance.IndexReorg3'; IF @Threads >= 4 EXEC msdb.dbo.sp_start_job @Job_Name = 'Database Maintenance.IndexReorg4'; IF @Threads = 5 EXEC msdb.dbo.sp_start_job @Job_Name = 'Database Maintenance.IndexReorg5'; END
What we are doing here is finding all of the indexes with a fragmentation > 30% and putting them into 5 different tables. Then we kick off five other jobs to perform the index maintenance.
On some days, this jobs executes perfectly. It normally takes about an hour to run (there are some large databases on this server). On other days, it takes less than 10 seconds to execute, the code that updates the index list isn't executed. But what is really strange is the last couple of lines of code are ALWAYS executed and the five "IndexReorg" jobs are kicked off.
I have the same issue with a db check job. Some days it executes, some days it doesn't. SQL Agent always reports that the job executed successfully, but you could tell by the runtime that nothing was done.
SET NOCOUNT ON DECLARE @SQL NVARCHAR(MAX) DECLARE @DatabaseName VARCHAR(255)
DECLARE CheckDatabaseIntegrityCursor CURSOR FOR SELECT [name] FROM master.sys.databases WHERE [name] NOT IN ('model', 'tempdb') ORDER BY [name]
OPEN CheckDatabaseIntegrityCursor
FETCH NEXT FROM CheckDatabaseIntegrityCursor INTO @DatabaseName
WHILE @@FETCH_STATUS = 0 BEGIN PRINT @DatabaseName + ' ---------------------------------------------------------------' SELECT @SQL =' USE [' + @DatabaseName + '] DBCC CHECKDB(N' + CHAR(39) + @DatabaseName + CHAR(39) + ') ' PRINT @SQL EXEC master.dbo.sp_executesql @SQL FETCH NEXT FROM CheckDatabaseIntegrityCursor INTO @DatabaseName END CLOSE CheckDatabaseIntegrityCursor DEALLOCATE CheckDatabaseIntegrityCursor
I've seen a few posts on various forums where folks have reporting such issues, but nobody has any solution.
Anyone else see anything like this?
"The most exciting phrase to hear in science, the one that heralds new discoveries, is not 'Eureka!' but 'That's funny...'" ~Isaac Asimov
|
|
|
|
|
SSCrazy
      
Group: General Forum Members
Last Login: Yesterday @ 11:37 AM
Points: 2,551,
Visits: 7,201
|
|
It might be more effective to start a new thread in the 2008 forum instead of dig up an old 2005 thread.
|
|
|
|
|
SSCrazy
      
Group: General Forum Members
Last Login: Wednesday, May 15, 2013 7:26 PM
Points: 2,642,
Visits: 4,960
|
|
Back to the original question by OP. We used to experience similar issue a while ago when the jobs were simply skipped. No failures. That happened when the service account was locked out in AD. So you are really will need to check any logins failures around the time when jobs didnt run and check the AD as well.
|
|
|
|