Share via


Сколько времени занимает установка SQL Express?

Широко распространена ситуация, когда в решение необходимо интегрировать датабазный движок и распространять его вместе с ним клиентам, чтобы база данных устанавливалась в составе общей инсталляции решения, а клиент про нее может даже особо не знать и не заморачиваться. Очень расстроила на днях одна уважаемая партнерская фирма, которой понадобилось встроить в состав своего решения бесплатный датабазный движок и которая в связи с этим стала воротить нос в сторону, стыдно сказать, MySQL.

– Мужики, разве ваше решение работает не на Windows?

– На ней, родимой, куда от вас деваться.

– Мало одного проца, одного гига памяти? Размер базы ожидает вылезти за пределы 10 гигабайт?

– Да нет, здесь версия рассчитана на средние предприятия, и база данных особо расти не будет.

– Тогда почему MySQL, а не SQL Express?

– Как ты лучше меня знаешь, SQL Express – это младший брат SQL Server. SQL Server затачивался под большие нагрузки и сложные запросы. Его надо настраивать. А здесь ведь сложных запросов не будет. Нам важнее, чтобы он на простых летал.

– Так ведь SQL Express уделывает по производительности MySQL. Безо всякой дополнительной настройки, в том числе на простых запросах.

– Интересно, надо будет посмотреть. Но ты мне еще скажи по-честному, вы же в бесплатной версии все программные возможности порезали. На SQL Express написать вообще чего-нибудь реально?

– Блин, ребята. Ну вы же серьезная компания, а не посиделка студентов младших курсов, которые в течение всего года динамили курс по вычислительной технике. Это там могут рождаться перлы, что основное в SQL – SELECT ... LIMIT, а если оно, скажем, делается при помощи ROW_NUMBER() OVER (ORDER BY ...), то все, кранты. Это уже не может называться нормальным сервером баз данных. Да они ни разу таких слов не знают; по ним, так и сервера в Редмонде работают на *nix. Им, конечно, виднее.

Если говорить серьезно, с точки зрения разработчика SQL Server Express не отличается от корпоративной редакции. Это относится и к базовым программным возможностям средствами SQL, и к созданию хранимых процедур, функций, триггеров, агрегатов, пользовательских типов на языках CLR (C#, VB.NET, Managed C++, ...). Поддерживается тип XML и операции над ним, геопространственные расширения, возможность хранения неструктурированного контента в файловой системе при помощи атрибута FILESTREAM (кстати, данные в таких полях не учитываются в ограничении на размер базы) и многое другое. Например, механизм отслеживания изменений Change Tracking, при помощи которого можно реализовать синхронизацию в отсоединенных приложениях. Скажем, приложение большую часть времени работает автономно, используя SQL Express как локальный кэш. В моменты соединения Express синхронизирует изменения со «взрослым» SQL Server. Кстати, Change Tracking поддерживается в Sync Framework.

На одну физическую машину можно установить до 16 экземпляров SQL Server Express. Они могут администрироваться из графической утилиты SQL Server Management Studio от коммерческой редакции, либо можно скачать ее бесплатную версию здесь, либо скачать SQL Server Express уже вместе с Management Studio здесь. Для SQL Server Express возможно использование полнотекстового поиска и служб отчетности – брать здесь. Собственно, если встраивать SQL Server Express в собственное приложение, как правило, навороты излишни – требуется голый движок. Такая опция тоже существует для свободного скачивания.

Как и остальные редакции, SQL Server Express поддерживает SQL Server Driver for PHP, который обеспечивает обращение к данным SQL Server напрямую из скриптов PHP. Берется бесплатно здесь. Для облегчения процесса переноса данных на SQL Server с других систем можно использовать специализированные утилиты миграции, некоторые из которых не только бесплатны, но и очень просты в использовании. В частности, здесь показан пример миграции практического Web-приложения (форума phpBB) с MySQL на SQL Server Express.

– Во, грузанул! Обожди, дай усвоить. Ответь лучше, сколько времени занимает установка? У нас коллеги говорят, что MySQL ставится максимум 10 мин., а для SQL Server это удовольствие растягивается чуть ли не на час. Прикинь, заказчик запустил инстоллер. Там, собственно, наш кусок – копейки. Все остальное время мы что, должны заставлять его сидеть до опупения и ждать, пока ваш SQL Server поставится?

На последний вопрос я не смог ответить с ходу, т.к. время установки SQL Server Express не отслеживал. Про «взрослый» SQL Server партнер, конечно, загнул. У меня даже на виртуалке получалось заведомо меньше часа. Но и гарантированно больше, чем 10 мин. А что будет в случае SQL Express, пришлось проверить экспериментально. Входные условия: на ноутбуке имеется Windows 7 Ultimate как виртуальная машина под Hyper-V. У нее в распоряжении 1 виртуальный процессор и 1 гигабайт памяти. SQL Server Express брался отсюда. Для него доступны 3 даунлоуда – х64, х86 + WoW, строго х86. Скачал второй вариант и запустил установку. Как можно видеть из журнала установки, время составило 7 мин. 35 сек.

Overall summary:

  Final result: Passed

  Exit code (Decimal): 0

  Exit message: Passed

  Start time: 2010-06-22 19:09:19

  End time: 2010-06-22 19:16:54

  Requested action: Install

 

Machine Properties:

  Machine name: W7X86SQL08R2

  Machine processor count: 1

  OS version: Windows 7

  OS service pack:

  OS region: United States

  OS language: English (United States)

  OS architecture: x86

  Process architecture: 32 Bit

  OS clustered: No

 

Product features discovered:

  Product Instance Instance ID Feature Language Edition Version Clustered

  Sql Server 2008 R2 MSSQLSERVER MSSQL10_50.MSSQLSERVER Database Engine Services 1033 Developer Edition 10.50.1600.1 No

  Sql Server 2008 R2 MSSQLSERVER MSSQL10_50.MSSQLSERVER SQL Server Replication 1033 Developer Edition 10.50.1600.1 No

  Sql Server 2008 R2 MSSQLSERVER MSSQL10_50.MSSQLSERVER Full-Text Search 1033 Developer Edition 10.50.1600.1 No

  Sql Server 2008 R2 MSSQLSERVER MSAS10_50.MSSQLSERVER Analysis Services 1033 Developer Edition 10.50.1600.1 No

  Sql Server 2008 R2 MSSQLSERVER MSRS10_50.MSSQLSERVER Reporting Services 1033 Developer Edition 10.50.1600.1 No

  Sql Server 2008 R2 SQLEXPRESS MSSQL10_50.SQLEXPRESS Database Engine Services 1033 Express Edition 10.50.1600.1 No

  Sql Server 2008 R2 Management Tools - Basic 1033 Developer Edition 10.50.1600.1 No

  Sql Server 2008 R2 Management Tools - Complete 1033 Developer Edition 10.50.1600.1 No

  Sql Server 2008 R2 Client Tools Connectivity 1033 Developer Edition 10.50.1600.1 No

  Sql Server 2008 R2 Client Tools Backwards Compatibility 1033 Developer Edition 10.50.1600.1 No

  Sql Server 2008 R2 Client Tools SDK 1033 Developer Edition 10.50.1600.1 No

  Sql Server 2008 R2 Integration Services 1033 Developer Edition 10.50.1600.1 No

 

Package properties:

  Description: SQL Server Database Services 2008 R2

  ProductName: SQL Server 2008 R2

  Type: RTM

  Version: 10

  SPLevel: 0

  Installation location: c:\d018f0600738f5f846\x86\setup\

  Installation edition: EXPRESS

 

User Input Settings:

  ACTION: Install

  ADDCURRENTUSERASSQLADMIN: True

  AGTSVCACCOUNT: NT AUTHORITY\NETWORK SERVICE

  AGTSVCPASSWORD: *****

  AGTSVCSTARTUPTYPE: Disabled

  ASBACKUPDIR: Backup

  ASCOLLATION: Latin1_General_CI_AS

  ASCONFIGDIR: Config

  ASDATADIR: Data

  ASDOMAINGROUP: <empty>

  ASLOGDIR: Log

  ASPROVIDERMSOLAP: 1

  ASSVCACCOUNT: <empty>

  ASSVCPASSWORD: *****

  ASSVCSTARTUPTYPE: Automatic

  ASSYSADMINACCOUNTS: <empty>

  ASTEMPDIR: Temp

  BROWSERSVCSTARTUPTYPE: Disabled

  CONFIGURATIONFILE:

  CUSOURCE:

  ENABLERANU: True

  ENU: True

  ERRORREPORTING: False

  FARMACCOUNT: <empty>

  FARMADMINPORT: 0

  FARMPASSWORD: *****

  FEATURES: SQLENGINE

  FILESTREAMLEVEL: 2

  FILESTREAMSHARENAME: SQLEXPRESS2

  FTSVCACCOUNT: <empty>

  FTSVCPASSWORD: *****

  HELP: False

  IACCEPTSQLSERVERLICENSETERMS: False

  INDICATEPROGRESS: False

  INSTALLSHAREDDIR: c:\Program Files\Microsoft SQL Server\

  INSTALLSHAREDWOWDIR: C:\Program Files\Microsoft SQL Server\

  INSTALLSQLDATADIR: <empty>

  INSTANCEDIR: C:\Program Files\Microsoft SQL Server\

  INSTANCEID: sqlexpress2

  INSTANCENAME: SQLEXPRESS2

  ISSVCACCOUNT: NT AUTHORITY\NetworkService

  ISSVCPASSWORD: *****

  ISSVCSTARTUPTYPE: Automatic

  NPENABLED: 0

  PASSPHRASE: *****

  PCUSOURCE:

  PID: *****

  QUIET: False

  QUIETSIMPLE: False

  ROLE: AllFeatures_WithDefaults

  RSINSTALLMODE: FilesOnlyMode

  RSSVCACCOUNT: NT AUTHORITY\NETWORK SERVICE

  RSSVCPASSWORD: *****

  RSSVCSTARTUPTYPE: Automatic

  SAPWD: *****

  SECURITYMODE: SQL

  SQLBACKUPDIR: <empty>

  SQLCOLLATION: Cyrillic_General_CI_AS

  SQLSVCACCOUNT: Administrator

  SQLSVCPASSWORD: *****

  SQLSVCSTARTUPTYPE: Automatic

  SQLSYSADMINACCOUNTS: W7X86SQL08R2\Administrator

  SQLTEMPDBDIR: <empty>

  SQLTEMPDBLOGDIR: <empty>

  SQLUSERDBDIR: <empty>

  SQLUSERDBLOGDIR: <empty>

  SQMREPORTING: False

  TCPENABLED: 0

  UIMODE: AutoAdvance

  X86: False

 

  Configuration file: C:\Program Files\Microsoft SQL Server\100\Setup Bootstrap\Log\20100622_190811\ConfigurationFile.ini

 

Detailed results:

  Feature: Database Engine Services

  Status: Passed

  MSI status: Passed

  Configuration status: Passed

 

Rules with failures:

 

Global rules:

 

Scenario specific rules:

 

Rules report file: C:\Program Files\Microsoft SQL Server\100\Setup Bootstrap\Log\20100622_190811\SystemConfigurationCheck_Report.htm

 

Комментарии.

- Как можно видеть из журнала (секция Product features discovered), на машине уже были установлены два экземпляра SQL Server (Developer Ed. и Express), так что время на установку пререквизитов ему не понадобилось. С другой стороны, я потратил время на ручной ввод ответов при установке (выбор эккаунта, серверной коллации, путей, включения FILESTREAM и т.д.) Если сделать unattended setup, оно сэкономится.

- Строго говоря, установка началась не в 19:09, а в 19:05, если считать с момента запуска скачанного ехешника. Это самораскрывающийся архив, 4 минуты он распаковывался во временную директорию. Я не учитываю это время по той причине, что партнер может вполне распаковать его заранее и включить в свой релиз дистрибутив SQL Express уже в раскрытом виде. Не согласные с таким результатом мускулисты могут приплюсовать сюда еще время скачки.

 

Алексей Шуленин