Максимальное количество баз данных в SQL Server 2008

Мы пишем программу на основе ASP.Net/C#, к которой потенциально может обратиться ряд компаний (каждая из которых имеет отдельный логин и данные). Мы думаем о наличии нескольких баз данных SQL Server 2008 (один и тот же экземпляр), каждый для одной компании. Тем не менее, программа С#, которая обращается к базе данных, будет одинаковой и создаст соответствующую строку соединения на основе базы данных, к которой будет обращаться клиент.

Сколько таких баз данных можно создать в одном экземпляре SQL-сервера, прежде чем увидеть ухудшение производительности из-за:

  • Ограничьте соединения, потому что каждое соединение (не уверенное в том, что оно будет объединено для доступа к различным базам данных) создается с использованием другой строки соединения.

  • Ограничение количества баз данных ограничено аппаратным или SQL-сервером. 2008 покажет ухудшение, когда число баз данных увеличится, чтобы сказать 100?

Что-нибудь еще, что я могу пропустить?

Спасибо за ваше время

Ответ 1

  • Максимальные базы данных для каждого экземпляра SQL Server: 32 767
  • Максимальное подключение пользователя: 32 767

(Отсюда: Максимальная емкость для SQL Server)

Оба они практически ограничены объемом оперативной памяти, установленной машиной SQL-сервера, задолго до достижения этих максимальных значений.

Из двух я подозреваю, что пользовательские подключения станут более серьезной проблемой, если у вас тысячи пользователей (поскольку вы не используете пул соединений).

Чтобы найти текущее значение машины для сервера SQL Server:

SELECT @@MAX_CONNECTIONS AS 'Max Connections'

Обновлено в ответ на комментарии к плакату:
Это не действительно количество баз данных, являющихся проблемой, но большее количество часто используемых страниц в этих базах данных. Если все "горячие" страницы вписываются в память (и происходит очень мало физических чтений), все это хорошо.

Ответ 2

Вы также должны иметь в виду, что соединения будут объединены по строке подключения - в вашем случае вы получите отдельные пулы для каждой клиентской БД. Это может быть не плохо, если у вас есть высокий трафик для каждого клиента, но если у вас низкий трафик на множество разных баз данных, вы не получите полного преимущества объединения.

Ответ 3

Наличие нескольких баз данных для нескольких клиентов может легко стать кошмаром обслуживания. Если приложение одно и то же, я предполагаю, что дизайн БД будет таким же.

Мы выполнили аналогичный проект пару лет назад, но мы решили пойти на объединение данных в одной базе данных, а затем разработали надежную модель безопасности, чтобы убедиться, что один клиент не видит или не изменяет другие данные клиента.

Я с гордостью могу сказать, что проект был успешным, и сегодня, когда мы говорим, мы держим данные более 100 разных клиентов и безупречно выполняем.

Раджа