• In cases like this, I am always strongly in favor for having a separate database for each customer, for the following reasons:

    1. Easy to backup and restore the data of every customer as a separate unit. It will occur that a customer needs to restore a backup of a few days ago, and this is easy to do when each customer has their own database.

    2. Security. You can handle security/logins for every customer separately, and you will not get into trouble if you (or a programmer) forgets a WHERE clause (or forgets parentheses around an OR clause, etc.) to select the data of a specific customer.

    3. Performance tuning. You will have very small and very big customers, each with their own data-distribution. With separate databases you can tune indexes and stored procedures for every customer separately.

    4. Scalability. With separate databases it's easy to scale horizontally by adding more servers and move a set of databases to the new servers.

    Having many databases on a single SQL Server instance is not a problem, in general. I have servers running with more than 5000 databases, without any issues.