The entire chain, from the first method that calls async, to the last method that actually needs to do an asynchronous operation, needs to be async.
So in your case, the asynchronous operation is most likely to be in the data access layer. The DAL will be called from a business layer. And the BL will be called from your UI controller, thus all of them need to be async.
There's no reason to make methods arbitrary async, most likely you will have methods that don't call any other async methods, thus they don't need to be async themselves.
Another case when you should not have a method as async, is if you are just returning a task, without awaiting anything.