Bănuiesc că atunci când rulezi procedura din Query Analizer, obţii şi nişte mesaje cu "n row(s) affected". Dacă e aşa, atunci acele mesaje pot să încurce error handling-ul din ADO, care s-ar declanşa doar atunci când apelezi .NextRecordset pentru a prelucra toate răspunsurile primite. Cea mai simplă modalitate de a rezolva problema este să pui un SET NOCOUNT ON la începutul procedurii.
Problema e descrisă şi în următorul KB: http://support.microsoft.com/kb/253240
Răzvan