• I'm largely piling on at this point, but what the heck...

    Yes, seperate the databases by customer and seperate them by module as well. If possible isolate by instance or use virtual servers. I worked, once upon a time, for a system that combined everything, all customers, all modules into a single database. We had one huge customer and a bunch of smaller customers. The smaller customers were always complaining because the server was slow (usually corresponding to high loads from the main customer). What's worse though is that the various modules and their versions didn't work well together, so after a time we had to drop foriegn key constraints and make all kinds of fields nullable, killing our data integrity and the performance of the indexes. Horrible frigging mess.

    Seperation has its own nightmares, but it will be scalable and flexible.

    "The credit belongs to the man who is actually in the arena, whose face is marred by dust and sweat and blood"
    - Theodore Roosevelt

    Author of:
    SQL Server Execution Plans
    SQL Server Query Performance Tuning