Hi David,
Do you have the corresponding *.log file for the database? If the file has never been truncated you may be able to translate the entire transaction log into a SQL file. This would provide you with the complete history of DDL/DML statements which you could playback on a fresh database.
It might be worth trying to start the database with the -f switch, in case the transaction log itself is corrupted (although log corruption would likely being up a different error message).
Mikel