The transaction log file can't make up for a corrupted database file. Its just going to try and rollback or roll forward transactions on the database file as it is recovered. One more possible thing to try although I doubt it will work. Even if it does, with a corrupt mdf, you're probably not going to get back everything you need. As a preliminary step, and being sure that you have a copy of your mdf and ldf files somewhere safe, remove any entries of the original database DROP DATABASE mydatabase **1. Create a new database** Use the the same physical file names and logical file names as was defined by the original corrupt database --create the database CREATE DATABASE mydatabase ON(NAME=’mydatabase, FILENAME='C:\my\path\to\file.mdf') LOG ON(NAME='mydatabase_Log', FILENAME='C:\my\path\to\file.ldf') GO **2. Shutdown MSSQL** SHUTDOWN Now copy in the corrupt mdf and ldf files over the newly created ones **3. Start MSSQL** You should now see the database in suspect mode **4. Put database into emergency mode SQL Server 2000** USE master GO sp_configure 'allow updates', 1 RECONFIGURE WITH OVERRIDE GO UPDATE sysdatabases SET status= 32768 WHERE name = 'mydatabase' **5. restart MSSQL** **5a. (optional)** Since you're data is now accessible via Query Analyzer, you could just export your important data into a new database. -- create the new database CREATE DATABASE mynewdatabase -- import data from the old database into the new SELECT * INTO mynedatabase..sometable FROM mydatabase..sometable. This won't help though with your triggers and metadata, but at least you'd have your data accessible in case the repair fails **6. Repair the database** This is the method I've used for repairing the database once its in emergency mode. USE mydatabase GO -- put database into single user mode sp_dboption 'mydatabase', 'single_user', 'true' GO -- repair the database, please be sure you have an extra copy somewhere of -- your two db files DBCC CHECKDB ('mydatabase' repair_allow_data_loss) GO -- turn off emergency mode USE master sp_configure 'allow updates', 1 UPDATE sysdatabases SET status= 0 WHERE name = 'mydatabase' GO -- check space allocation consistency DBCC CHECKALLOC ('mydatabase') -- verify db integrity DBCC CHECKDB ('mydatabase') -- take the database out of single user mode sp_dboption 'mydatabase', 'single_user', 'false' GO -- disallow updates to the system tables USE master GO sp_configure 'allow updates', 0 GO