Wow… I’m going to swim directly against the current here and say, “almost always”. There are a laundry list of reasons – some/many of which I’m sure others would argue. But I’ve developed apps both with and without the use of stored procs as a data access layer, and it has been my experience that well written stored procedures make it so much easier to write your application. Then there’s the well-documented performance and security benefits.