After many force restarts my laptop the MSDB database
decided to that it was time and let the
owner know of the harassment and didn’t want come back up.
The error log read as following
An error occurred during recovery, preventing the database
'msdb' (database ID 4) from restarting. Diagnose the recovery errors and fix
them, or restore from a known good backup. If errors are not corrected or
expected, contact Technical Support.
Solution
Following is a step by step guide to bring the database back
online
1.
Put MSSQL into single
user mode
1.
Click START
; Microsoft SQL Server 2005 Configuration Tools ; SQL Server
Configuration Manager
2.
Right click on SQL
Server and choose Properties
3.
Click on the Advanced
tab. Under Startup Parameters you will be adding the following
parameters to the beginning of the string: -m;-c;-T3608
2.
Restart SQL Server
3.
Connect to SQL server
through the Management Console. From this point on we will be using TSQL to
issue the commands so click the New Query button on the top left. At
this point you should be in the master database inside the query window.
4.
Make sure the SQL
Agent is down
5.
Login using the DAC
connection
Note : if not in as
DAC you will get the following message ( if not in sigle user mode)
Cannot
detach an opened database when the server is in minimally configured mode.
6.
Detach the MSDB
database using the following commands:
use master
go
sp_detach_db ‘msdb’
go
and click Execute
use master
go
sp_detach_db ‘msdb’
go
and click Execute
7.
We need to move (or
rename, I prefer moving them) the existing MDF and LDF files for the MSDB
database so that we can recreate it.
1.
Usually these files
are located in the following directory:
C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data
Your’s might differ.
C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data
Your’s might differ.
2.
Move (or rename) the MSDBDATA.mdf
and MSDBLOG.ldf files.
8.
Back to the Management
Studio. Open up the instmsdb.sql file in a new query window. This file
is usually located in the following directory:
C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Install
C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Install
9.
Execute the file. If
you see any errors about xp_cmdshell, just ignore them. They are common and the
script will take care of it.
10.
At this point you
should have your MSDB database restored. The only thing left is cleanup.
11.
Execute the following
command to make sure that xp_cmdshell is once again set to disable for security
reasons:
EXEC sp_configure ‘show advanced options’, 1
GO
RECONFIGURE WITH OVERRIDE
GO
EXEC sp_configure ‘xp_cmdshell’, 0
GO
RECONFIGURE WITH OVERRIDE
GO
EXEC sp_configure ‘show advanced options’, 1
GO
RECONFIGURE WITH OVERRIDE
GO
EXEC sp_configure ‘xp_cmdshell’, 0
GO
RECONFIGURE WITH OVERRIDE
GO
12.
Shutdown SQL Server
13.
Go back into your
Startup Paremeters for your server in the SQL Server Configuration Manager and
removed the -c;-m;-T3608 parameters we added earlier.
14.
Restart SQL Server
15.
If you have any SQL Server
jobs and you need them recovered you will have to restore the MSDB database
from a backup of the database
Reference
- Many thanks to Rip’s Domain - http://rip747.wordpress.com/2008/05/26/rebulding-msdb-in-sql-server-2005/;
I have added some extra steps for a seamless transition- http://msdn.microsoft.com/en-us/library/ms190737.aspx
Comments
Post a Comment