I have a MS SQL server 2005 database on my database server. Recently the database server crashed, so I need to move the database to a new server. Is there anyway to restore teh mdf file from a crashed hard disk, assuming that the file wasn't located on bad sectors?
Yes. If you have the ldf file you've got a better chance of success.
Simply take the mdf and ldf files are copy them to the new server. Then attach the database to the new instance using the sp_attach_db system stored procedure or using the SQL Server Management Studio.
If you don't have the ldf file you can attach the database using just the mdf file using the sp_attach_single_file_db system stored procedure or by using the SQL Server Management Studio.
Do you have a recent backup file as well? Not only could you follow the instructions from mrdenny but if that fails, you could try restoring from your last backup.
If you dont have backups (and we hope you can restore your db!), think about implementing an SQL Server agent job. You could script the database backup and let the agent run at some time that you know the server is being least used.
If you have system wide backups in place this file will be picked up as SQL server will only lock the file while the backup is being created.
The script below is for SQL Server 2005 SQL Server Agent. This shows you a schedule that runs at 12:10AM every single day and backups a database called MyDB. You can adjust as necessary. Run this inside your management studio to get an understanding of how to setup a scheduled job from SQL Server Agent.