I got so error:
Database 'MyDb' is being recovered. Waiting until recovery is finished.
I have had a critical operation at that time.
What is the cause of this situation? And how can it be avoided?
Crash recovery is running on 'MyDb'. Possible causes:
If recovery is taking a long time to complete and there doesn't appear to be any activity you may need to restore from backups. If you're feeling brave you should start reading everything you can find about repairing/recovering suspect databases.
More information on what happened before the database ended up in this state would make for better answers e.g. what actions you carried out, what errors are in the SQL error log etc.