Я бы также предложил использовать две базы данных, ConfigDB и ContentDB.
ConfigDB содержит таблицу арендаторов и имя хоста, имя базы данных, имя пользователя sql и пароль sql базы данных контента для каждого из арендаторов в этой таблице; доступ к нему осуществляется через отдельного пользователя sql с именем usrAdmin
ContentDB содержит все таблицы приложений, сегментированные по SID (или SUSER_ID) пользователя и доступ к которому получают каждый пользователь sql арендаторов с именами usrTenantA, usrTenantB, usrTenantC и т. Д.
Для извлечения данных вы подключаетесь к ConfigDBкак администратор, получите учетные данные для соответствующего клиента, подключитесь к серверу, используя полученные учетные данные, а затем выполните запрос к базе данных.
Причины, по которым я это сделал, - горизонтальная масштабируемость и возможность изолировать клиентов по требованию.
Теперь у вас может быть много ContentDB, возможно, с каждыми десятью арендаторами, которые регистрируются, вы создаете новую базу данных и настраиваете свое приложение, чтобы начать подготовку клиентов в этой базе данных.
В качестве альтернативы вы можете подготовить несколько серверов sql, создать базу данных контента на каждом и иметь своих арендаторов предоставления кода, на которых когда-либо был самый низкий уровень использования сервера за всю историю.
Вы также можете разместить все свои обычные серверы.клиенты на серверах A и B, но у сервера C могут быть арендаторы в их собственных БАЗАХ ИНДИВИДУАЛЬНЫХ, весь код для нескольких арендаторов все еще там, но этим клиентам можно сказать, что они теперь более безопасны из-за более высокой изоляции.