Должен ли я устанавливать sql server на каждом клиенте, если мое программное обеспечение использует его?

если мы разрабатываем какое-либо программное обеспечение на c# (или в основном .Net), мы не устанавливаем visual studio ни для одного клиента. Клиент просто должен иметь установленный .Net framework (1.0, 1.1, 2.0, 3.0 и т. д.), И мы хорошо идем.

таким же образом, если мы делаем приложение в VC2008, ему просто нужно иметь Visual C++ 2008 runtime (доступно с сайта MS бесплатно, около 4-5Mb). Так что, в принципе, нам просто нужно среда выполнения. но нет никакой среды выполнения SQL server 2008 (или I не осознаете этого?).

Итак, мой вопрос: если мое программное обеспечение использует SQL Server 2008, какая среда выполнения (или что-либо еще) потребуется на стороне клиента для его работы?

кроме того, еще одна вещь, я вижу, что есть SQL Server express edition, который я могу предположительно использовать в развертывании, но это кажется тяжелым, зная, что если мое программное обеспечение, если только 5, 10 или 20Mb мне нужно установить о концерте, чтобы пользователь мог его запустить.

наконец, если я использую SQL Server 2008 Developer Edition (который я, или enterprise one не уверен), и я установил SQL Server express на клиенте, не вызовет ли это проблемы, если мое программное обеспечение использует некоторые функции, которые не поддерживаются в express edition? (скажем, номер базы данных или параллельное соединение или что-нибудь еще).

Так? Какая среда требуется для этого? И если установка sql server express является единственным вариантом, что делать, если я использую некоторые функции, которые не поддерживаются в express edition? Конечно, я не могу продолжать делать полная установка developer edition на каждом клиенте!

EDIT: если это поможет, мой текущий проект-это система управления библиотекой, и в ней будет установлен клиент (компьютер библиотекаря, для которого я это делаю), поэтому здесь нет случая сервера-клиента. Итак, должен ли я установить sql express на свой компьютер? Также, как YvesR указал в своем ответе, что ссылка показывает только три издания (основные из них), но http://msdn.microsoft.com/en-us/library/cc645993%28v=SQL.110%29.aspx показывает более подробное сравнение. Итак, в этом конкретном сценарии, который я только что описал, было бы достаточно, если бы я просто развернул и express edition на машине клиента?

теперь о том, что я сказал о некоторых функциях, недоступных в express edition, http://msdn.microsoft.com/en-us/library/cc645993 (v=SQL.110).aspx#CrossBoxScale показывает, что express edition ограничивается база данных размером 10Gb, теперь я знаю, что этого более чем достаточно в описанном выше сценарии, но что, если в каком-то другом случае мне нужно больше? Чем express edition этого не сделает, чем как мне развернуть?

наконец,http://www.microsoft.com/sqlserver/en/us/get-sql-server/how-to-buy.aspx показывает еще два издания, Compact и Developer, я знаю о разработчике, но что это за компактное издание? И что более важно, почему они не comared или перечислены здесь?

Edit 2: его 4Gb, предел, а не 10Gb. 10 Гб находится в SQL Server 2008 R2 Express и выше, 4 ГБ в SQL Server 2008 Express.
marc_s: Спасибо за это!

4 ответов


Если вы используете базу данных SQL Server для сохранения данных в приложении, вам нужно

a. клиент-серверная инфраструктура, в которой клиент подключается к центральному SQL Server через LAN

b. или используйте клиентскую версию sql server edition (это то, что вы хотите, я думаю). Для этого можно использовать SQL Server Express edition или просто MSDE (Desktop Edition).

Подробнее см., например, в блоге http://searchsqlserver.techtarget.com/tip/SQL-Server-2005-Express-vs-Desktop-Engine-MSDE или google для него, много информации от самой MS о MSDE.

EDIT: с 2012 года больше нет MSDE,но SQL Server 2012 Express приносит режим, подобный MSDE. Смотрите здесь: http://www.microsoft.com/sqlserver/en/us/editions/2012-editions/express.aspx

и как вы можете видеть здесь: http://www.microsoft.com/sqlserver/en/us/editions.aspx, не должно быть функции, которую вы используете, которая недоступна для настольного приложения imho.


хорошо, давайте вернемся немного назад. У вас есть требование к каждому из ваших программных клиентов иметь собственную локальную базу данных? Если это так, есть гораздо более простые способы хранения данных на клиенте (я бы предложил сериализацию в файл как один подход).

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


для доступа к базе данных не требуется клиентская среда выполнения, кроме установленной .NET framework (которая вам все равно нужна для всех исполняемых файлов .NET).

Если вы хотите, чтобы база данных располагалась на том же компьютере, что и клиентские бесплатные параметры, например SQL Server Express или SQLite.


вот два способа для приложений Windows:

  1. настольное приложение, которое будет использоваться каждым клиентом отдельно без назначения компьютера в качестве сервера. Вам нужно только установить SSMS и приложение для ваших клиентов. Операции обновления / удаления / вставки будут выполняться отдельно.

  2. клиент-серверный подход, установить SSMS и подключите БД к компьютеру. Этот компьютер будет служить вашим клиентам в качестве сервера. После этого установить exe-файл на любом клиентском компьютере убедитесь, что клиенты подключены к серверу с помощью IP-адреса.