The postings on this site are my own and do not represent my Employer's positions, advice or strategies.

LifeAsBob - Blog

 

Home

No Ads ever, except search!
Tuesday, March 19, 2024 Login
Public

SQL Agent will not start when a user database is in recovery ! 2/6/2008 9:42:45 AM

This is crap, SQLAgent not starting because a user database is in recovery mode, after restarting sql server.  Usually recovery / checkpointing of user databases on start-up is really quick, but if one runs into an issue it can take a long long time, this particular user database has been recovering for 4+ hours.  Now I have issues with maintenance jobs and reporting services jobs not running because sql agent will not start.

I can understand if msdb or some other system database is in recovery or suspect, but not a damn user database !

SQL Server Error Log:

2008-02-06 09:38:44.07 spid10s     Recovery of database 'ClientAssistant_CY' (20) is 27% complete (approximately 38597 seconds remain). Phase 3 of 3. This is an informational message only. No user action is required.

READ THAT, 38000+ seconds, over 10 HOURS, we can't wait that long ! 

SQL Agent Error Log:

2008-02-06 08:44:55 - ? [393] Waiting for SQL Server to recover databases...

This is unreal, i'm going to have to de-attach / interrupt the recovery process; i think, but to be sure i placed a support call to Microsoft.

According to Microsoft, this is a new feature of SQL Server 2005.  If SQL Server Agent starts and not all the user databases on-line / recovered than sql server agent stays in a starting mode and no jobs run.

The way around this is to "interrupt" the services, so you must stop sql server, which requires finding the process id (pid) and killing it via task manager or kill.exe; rename the mdf and ldf of the database taking the extremely long recovery time and then restart the services, everything should come on-line.  Now you can either restore from a backup or re-attach the mdf / ldf and let it start recovering again....

very very bad solution as interrupting sqlservr.exe with a kill of the pid is a high risk operation that could corrupt other databases, so proceed with caution and get a critical support case opened with Microsoft, you do not want to be doing this alone, have them on the phone with you, severity 1.

RESPONSE FROM MICROSOFT (Names removed)>

From: [nameremoved@microsoft.com]
Sent: Friday, February 08, 2008 9:02 AM
To: Horkay, Robert
Cc: 
Subject: RE: Case number SRX080206600293 - SQLAgent will not start on a cluser - Open

Hi Bob,

 We have decided to file a design change request to see if our development team will build in functionality to SQL Agent so that a registry key, trace flag or some startup parameter can be added to have SQL Agent go ahead and start up while databases are in recovery.  If this is approved then a knowledge base article would be published describing how to do this and the caveats involved.  Instead of taking SQL Server down to stop recovery we would only have to take SQL Agent offline to add the required parameters to change the code path in SQL Agent and let it start up immediately or at least 5 minutes after starting the service.  I will continue to work on the design change request and hopefully it will be approved.

 Thank you,

{removed}MCDBA

Microsoft SQL Server Support Escalation Engineer

SQL Server Escalation Services Team

Product Support Services (PSS) - Charlotte, NC 

Hours:  M-F 9:00am - 6:00pm Eastern | Phone:  {Removed} | Email: {Removed}


Blog Home