ok, me confundi con la frase, "al ejecutarlo desde fuera".
Tengo la duda de porque utilizas sql dinamico para manipular los parametros de la llamada a un sp, si se puede hacer directamente.
Código:
Execute sp_AgregarDonacionDet @ClaveDonacion , @Contador, 'C' , @Caract1
Por otro lado, si es la version 2005 puede pertenecer a un esquema diferente al dbo, verifica a que esquema pertenece el sp.