• For many of the reasons mentioned, I lean towards separate databases as well. However I also know that you often have many common elements, like procedures, functions, etc. that exist in all databases.

    I'd consider a "master design" database that has these common elements on which you deploy your new changes and use as a test bed. I've seen people use replication from a master database to deploy changes, but since I may stagger deployments to clients, I think I prefer a good deployment system that allows me to specify and automate changes to all/any databases as I see fit.