Назад | Перейти на главную страницу

Могу ли я ожидать каких-либо проблем, если все 500 пользователей подключатся к одному экземпляру SQL Server?

Технически это не та проблема, которую мне нужно решать. Я разрабатываю проект, в котором приложение напрямую подключается к базе данных MS Access. Заказчик предложил перенести базу данных на свой экземпляр SQL Server. Затем приложение будет использовать другую строку подключения для прямого подключения к базе данных SQL Server вместо MS-Access. Простой тестовый запуск показал, что это сработает, если два пользователя подключены к одной базе данных.

Я не знаю, какую версию SQL Server на самом деле использует заказчик, но предполагаю, что они знают, что делают. Прямо сейчас я добавляю некоторые дополнительные изменения в код и могу протестировать приложение на SQL Server Express 2005 до 5 пользователей. Но у клиента будет более 500 пользователей, которые будут использовать одно и то же приложение одновременно, таким образом, будет 500 прямых подключений к базе данных.

Я не могу убедить заказчика доплатить за лучшую клиент-серверную модель этого проекта. Это также потребует дополнительного времени на разработку. И я не знаком с проблемами, которые могут возникнуть с таким большим количеством пользователей в одной базе данных SQL Server. Так что я чувствую себя капитаном «Титаника» и только что заметил айсберг ...

Так он утонет? Какие риски этой установки упускает из виду этот заказчик? Или нет никакого риска, о котором стоит говорить? (Заказчик имеет опыт работы с SQL Server, поэтому в основном я сомневаюсь.)

SQL Server 2005 будет работать нормально, пока пользователь использует версию, лицензированную как минимум для 500 пользователей. Возможно, вам понадобится поддержка более 500 из-за разорванных подключений и т.п., но я бы рекомендовал SQL-сервер поверх MS Access в любой день.

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

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

Больше пользователей, пытающихся одновременно получить доступ и изменить одни и те же данные, скорее всего, приведут к гораздо большему количеству блокировок запросов от всех блокировок таблиц / строк в базе данных. При таком использовании производительность приложения может замедлиться до сканирования. Трудно сказать, не видя схемы вашей базы данных. Предполагая, что вы только что выполнили простое преобразование из Access в MS-SQL, скорее всего, вы не пользуетесь преимуществами настоящей СУБД, такими как ограничения, внешние ключи и индексация.

Еще одна вещь, на которую следует обратить внимание, - это проблемы, возникающие из-за одновременного использования нескольких пользователей. Разработка приложения для одного пользователя позволяет использовать ярлыки для таких вещей, как транзакции базы данных, которые должны быть атомарными. Вы сталкиваетесь с такими же проблемами при многопоточном программировании. Если у вас есть серия манипуляций с базой данных, которые должны выполняться вместе, что произойдет, когда другой пользователь запустит тот же процесс, а первый пользователь еще не завершил работу? Повлияет ли обработка второго на первый? Если да, вам нужно это учесть.

В конце концов, время покажет. Но вам может потребоваться больше работы, чем вы ожидали.

как очень опытный пользователь SQL (и Access), я согласен. у старого MSDE2000 было ограничение на количество подключений, я думаю, но новый SQL Express вообще не регулируется. Версия Express сможет обрабатывать количество подключений, но версия Express ограничена только одним процессором, что немного ограничивает возможности.

Если в конечном итоге вам потребуется больше мощности, вам придется приобрести многопроцессорную версию SQL, за которую придется платить.