Интеграция пакетов обновлений (Service Pack) и накопительных обновлений (Cumulative Update) в дистрибутив SQL Server 2008

Сегодняшняя заметка несколько выходит за рамки традиционного обсуждения темы виртуализации. Мы поговорим об SQL Server 2008 и способе создания интегрированного дистрибутива. Он должен включать в себя как пакет обновления (на данный момент это SQL Server 2008 Service Pack 1), так и последнее накопительное обновление — SQL Server 2008 Cumulative Update Package.

Дело в том, что параллельно с выходом новой операционной системы Windows Server 2008 R2 также обновится и линейка серверных продуктов семейства System Center, которые активно используются для эффективного решения задач консолидации серверов и управления инфраструктурой. Новые версии продуктов System Center теперь полностью совместимы с SQL Server 2008. Теперь нет никаких проблем в использовании нового сервера баз данных Microsoft ни при использовании с Operations Manager 2007 R2, ни с Virtual Machine Manager R2. Весь функционал, включая Reporting Services, совместим с SQL Server 2008.

В ближайшее время я опубликую статьи с пошаговыми инструкциями по установке OpsMgr R2 и SCVMM R2 в сценарии с использованием SQL Server 2008. Очевидно, что всегда желательно использовать текущие версии ПО, включая последние обновления. Это даёт наибольшую стабильность, повышают безопасность системы, решают вопросы совместимости приложений. SQL Server 2008 официально поддерживает автоматизацию установки обновлений в процессе развёртывания самого сервера баз данных. Для предыдущих поколений SQL Server это невозможно, и появление такой возможности не планируется.

Итак, как же нам создать свой дистрибутив SQL Server 2008, включающий в себя первый пакет обновления и последнее на сегодня накопительное обновление? Давайте решать задачу по шагам.

Шаг первый. Подготовка дистрибутива SQL Server 2008

SQL Server 2008 распространяется в виде многоплатформенного дистрибутива. То есть в образе диска с SQL Server 2008 вы сразу получаете все три платформы — x86, x64 и ia64. Для некоторых языков, включая русский, SQL Server 2008 выходил только на двух платформах — x86 и x64. Версия для процессоров Intel Itanium выпущена лишь на тех языках, для которых собирался Windows Server 2008 for Intanium.

Существует несколько изданий SQL Server 2008 — начиная от версий Express, которые не обновляются при помощи SQL Server 2008 Service Pack, но распространяются в виде уже обновленных пакетов. О разнице между изданиями Enterprise, Standard, Workgroup, Web и Developer можно почитать вкратце на этой странице. Для загрузки всем доступна 180-дневная версия для ознакомления SQL Server 2008 Enterprise — как английская, так и русская. Подписчики MSDN и TechNet могут загрузить и другие издания.

Итак, у вас уже есть дистрибутив SQL Server 2008 (не Express) — в виде диска или образа, загруженного с сайта Microsoft. На этом шаге нам необходимо скопировать все содержимое диска или образа на жесткий диск. Для выполнения всех операций планируйте иметь на диске не меньше 8.5 ГБ свободного пространства.

Допустим, мы скопировали содержимое диска в каталог «C:\SQLServer2008_Full_SP1_CU».

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

На этом же шаге мы загрузим с сайта Microsoft первый пакет обновления — SQL Server 2008 Service Pack 1. Это можно сделать как для русской, так и английской версии — выбирайте тот язык, который совпадает с вашим дистрибутивом. Не забудье загрузить версии для всех платформ!

Далее нам потребуется последнее накопительное обновление — SQL Server 2008 Cumulative Update. Для этого на специальной странице смотрим, какое же обновление является последним на настоящий момент, и переходим к соответствующей статье Базы знаний. На сегодня текущим является Cumulative Update Package 6. Перейдите по ссылке «View and request hotfix downloads», расположенной в верху страницы. Чтобы увидеть обновления для всех платформ, а не только для текущей, нажмите на ссылку «Show hotfixes for all platforms and languages». В раскрывшемся списке отметьте обновления для всех платформ, введите адрес своей электронной почты и отправьте запрос. Примерно через десять минут ссылки для загрузки обновлений окажутся в вашем почтовом ящике.

Шаг второй. Интегрируем SQL Server 2008 Service Pack 1

Теперь у вас на диске есть копия дистрибутива SQL Server 2008 и отдельно все файлы с различными обновлениями.

Создадим в каталоге «C:\SQLServer2008_Full_SP1_CU» подкаталог «PCU». В него необходимо распаковать пакет обновления.

SQLServer2008SP1-KB968369-IA64-ENU.exe /extract:"C:\SQLServer2008_Full_SP1_CU\PCU"

SQLServer2008SP1-KB968369-x64-ENU.exe /extract:"C:\SQLServer2008_Full_SP1_CU\PCU"

SQLServer2008SP1-KB968369-x86-ENU.exe /extract:"C:\SQLServer2008_Full_SP1_CU\PCU"

В русской версии, очевидно, будет всего две команды.

SQLServer2008SP1-KB968369-x64-RUS.exe /extract:"C:\SQLServer2008_Full_SP1_CU\PCU"

SQLServer2008SP1-KB968369-x86-RUS.exe /extract:"C:\SQLServer2008_Full_SP1_CU\PCU"

Теперь необходимо из каталога «C:\SQLServer2008_Full_SP1_CU\PCU» скопировать в каталог «C:\SQLServer2008_Full_SP1_CU» файлы «setup.exe» и «setup.rll». Далее из каталогов «PCU\x86», «PCU\x64» и «PCU\ia64» следует скопировать все файлы, без каталогов и кроме файла «Microsoft.SQL.Chainer.PackageData.dll» в соответствующие каталоги «SQLServer2008_Full_SP1_CU\x86», «SQLServer2008_Full_SP1_CU\x64» и «SQLServer2008_Full_SP1_CU\ia64». Важно не ошибиться на этом этапе и не перезаписать исходную версию файла «Microsoft.SQL.Chainer.PackageData.dll». В противном случае установка пройдёт с ошибками.

Теперь требуется прописать вызов автоматической установки пакета обновления сразу после установки самого SQL Server 2008. Для этого в каждом из каталогов «SQLServer2008_Full_SP1_CU\x86», «SQLServer2008_Full_SP1_CU\x64» и «SQLServer2008_Full_SP1_CU\ia64» необходимо найти файл с именем «DefaultSetup.ini» и вставить в него строку с указанием пути до пакета обновления.

PCUSOURCE="C:\SQLServer2008_Full_SP1_CU\PCU"

Технически можно указать и просто строку с относительным путем: «PCUSOURCE=".\PCU"». Но в таком случае придётся обязательно запускать установку из корневого каталога дистрибутива. Это накладывает определённые ограничения на вызов установки из сценариев, командных файлов или других ссылок на дистрибутив.

Вниманию тех, кто использует 180-дневную ознакомительную версию. В ознакомительной версии по умолчанию не используются файлы конфигурации «DefaultSetup.ini». Их потребуется создать самостоятельно в каждом из каталогов «SQLServer2008_Full_SP1_CU\x86», «SQLServer2008_Full_SP1_CU\x64» и «SQLServer2008_Full_SP1_CU\ia64». Содержимое файла должно быть следующим.

;SQLSERVER2008 Configuration File

[SQLSERVER2008]

PCUSOURCE="C:\SQLServer2008_Full_SP1_CU\PCU"

Кстати, если вы уже успели приобрести SQL Server и имеете ключ продукта для установки, то здесь же вы можете добавить строку вида:

PID="AAAAA-BBBBB-CCCCC-DDDDD-EEEEE"

И при установке вы получите полнофункциональную каких-либо временных ограничений. Введя в ознакомительную версию ключ вы получаете то издание, которое соответствует ключу — дистрибутив у изданий единый.

На этом интеграция пакета обновлений завершена, переходим к заключительному шагу.

Шаг третий. Интеграция SQL Server 2008 Cumulative Update

Данный шаг очень похож на предыдущий. Загруженные на первом этапе файлы с накопительным обновлением следует распаковать в отдельный подкаталог «CU», используя следующие команды.

SQLServer2008-KB977443-ia64.exe /extract:"C:\SQLServer2008_Full_SP1_CU\CU"

SQLServer2008-KB977443-x64.exe /extract:"C:\SQLServer2008_Full_SP1_CU\CU"

SQLServer2008-KB977443-x86.exe /extract:"C:\SQLServer2008_Full_SP1_CU\CU"

Обратим внимание, что файлы с накопительным обновлением не зависят от языка продукта — в отличии от файлов с пакетом обновления. То есть для русской и английской версии они общие. Также отмечу, что для русской версии вам не требуется загружать и распаковывать накопительное обновление под платформу Intel Itanium. Конечно, если вы его всё-таки загрузите и распакуете — то ничего плохого из-за этого не случится. Просто оно никогда не будет использоваться, но свои триста мегабайт на диске займет.

Теперь необходимо из каталога «C:\SQLServer2008_Full_SP1_CU\CU» скопировать в каталог «C:\SQLServer2008_Full_SP1_CU» файлы «setup.exe» и «setup.rll». Далее из каждого каталога «CU\x86», «CU\x64» и «CU\ia64» следует скопировать все файлы, без подкаталогов и без файла «Microsoft.SQL.Chainer.PackageData.dll» в соответствующие каталоги «SQLServer2008_Full_SP1_CU\x86», «SQLServer2008_Full_SP1_CU\x64» и «SQLServer2008_Full_SP1_CU\ia64». Важно не перезаписать исходную версию файла «Microsoft.SQL.Chainer.PackageData.dll», иначе в ходе установки возможны ошибки.

Далее, как и в случае с пакетом обновления, нам потребуется прописать вызов автоматической установки накопительного обновления сразу после установки самого SQL Server 2008 и первого пакета обновления. Для этого в каждом из каталогов «SQLServer2008_Full_SP1_CU\x86», «SQLServer2008_Full_SP1_CU\x64» и «SQLServer2008_Full_SP1_CU\ia64» необходимо найти все тот же файл с именем «DefaultSetup.ini» и добавить в него строку с путем до накопительного обновления.

CUSOURCE="C:\SQLServer2008_Full_SP1_CU\CU\"

То есть теперь наша окончательная версия файла «DefaultSetup.ini» в каждом из каталогов «x86», «x64» и «ia64» станет примерно вот такой.

;SQLSERVER2008 Configuration File

[SQLSERVER2008]

PID="AAAAA-BBBBB-CCCCC-DDDDD-EEEEE"

PCUSOURCE="C:\SQLServer2008_Full_SP1_CU\PCU"

CUSOURCE="C:\SQLServer2008_Full_SP1_CU\CU"

Строка с PID должна содержать реальный ключ продукта для SQL Server 2008 или отсутствовать вовсе.

Теперь при установке SQL Server 2008 если на стадии «Installation Rules» обратите внимание пункт «Update Setup Media Language Compatibility».

А на стадии «Ready to Install» — на узел «Slipstream».

В итоге, после установки, используя SQL Server Configuration Manager, вы сможете посмотреть версию установленного ПО и сравнить с тем, что мы видели на странице со списком доступных обновлений. Пример для русской версии:

Отдельно можно обратить внимание на пакет электронной документации SQL Server Books Online, — к сожалению, он не обновляется ни с пакетом обновления, ни с накопительными обновлениями, однако после установки SQL Server вам будет предложено загрузить обновление с Windows Update. Чтобы автоматически устанавливать и актуальную электронную документацию, пройдите по ссылке и загрузите обновлённые пакеты. На момент написания статьи доступны пакеты документации датированные октябрём 2009 для английской и июлем 2009 для русской версии. Прямые ссылки на русскую и английскую версии. Скачанный пакет следует переименовать в «SQLServer2008_BOL.msi» и перезаписать одноименный файл в каждом из каталогов «x86\setup», «x64\setup» и «ia64\setup» .

На этом длинная вводная часть про SQL Server 2008 завершена. Скоро я расскажу о том, как следует устанавливать новые версии продуктов семейства System Center с использованием SQL Server 2008.