I love dogs, but when it comes to dealing with them on the road, it angers me to no end that their owners don't bother to take responsibilty for their containment. Makes me want to strangle first the dogs, then the owners!
Anyway, before using pepper spray or water, what I've found is that simply yelling/saying "NO!" in a firm owner-like voice will either make them hesitate enough to enable me to get away or in best-case, has actually stopped them in their tracks. You figure most dogs are at least trained to know what "no" means. However, bear in mind that this doesn't always work (some dogs are reeeeally dense).
Outside of that, my next defense would be the water, but you've already said you'd rather not use it. I do have pepper spray, but I rarely bring it on my rides because I'm not confident that I'd be able to point it in the right direction in a hurried situation. I can just see myself spraying ME instead of the dog!
What Dogmama said about the Animal Control is right on. Drive by, get the address, and report them. A threat of legal action is never a good thing. Do that now, don't wait. Remember, it's probably not just you who is having problems. I'm a constant procrastinator -- I and others that I ride with kept put off calling about this stupid black lab that used to come at us on our group rides and on my solo ones. Well, it wasn't long before it actually did make someone crash (he was ok).
Since you would already have their address, send them a postcard, let them know that you have a right to ride on public roads and their dog is a problem (sign it anonymously). Be as nice or as terse as you feel you need to be, but if they know someone has singled them out, they might bother to install measures to contain the dog to their yard.
Good luck & be safe!
~BikeMomma
"Only two things are infinite, the universe and human stupidity, and I'm not sure about the former." --Albert Einstein