A. This is a fairly common error :-
1. Check for previous errors - this is often not the actual error that occurred but is a symptom of a previous error that has caused SQL Server to get confused. It then ends up trying to exit a routine without having cleared up all the resources that it owns. It is the previous error that you should look up in Technet/Microsoft Knowledgebase.
2. It can be a symptom of not having enough resources. Up the number of open objects, locks and open databases. This may help.
3. Apply the latest servicepack - this or the underlying error may well have been fixed already.
4. If none of the above apply, and your problem does not match any known, documented issue then you will have to call Microsoft PSS and open a paid fault call. If you can reproduce the problem with a script run against a new, clean database then it should be fairly easy for a fix to be written.