Интеграция пакетов обновлений (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.

Comments (18)

  1. Alex A says:

    Я уверен, что инсталляция SP не должна технически проходить поверх CTP, и то что она вообще идет звучит мистически.

    Дистрибутив SQL, собранный с SP1 и CU3 может использоваться и для апгрейда, – просто с него запустите сетап поверх CTP и получите актуальную версию.

  2. Alex A says:

    Попробуйте собрать интегрированный дистрибутив и сделать Upgrade инсталляцию.

  3. Alex A says:

    Коллеги в корпе говорят, что обновление для ClickOnce входит в основной CU3, так что дополнительно ставить/интегрировать не нужно.

    Полезные комментарии я поощряю – могу предложить коробку с полнофункциональным SQL 2008 (not for resale). Или с Visual Studio 2008 (not for resale). Заберете? Могу выслать в принципе.

  4. Anonymous says:

    После интеграции sp2 в sql server 2008 (на windows server 2008 r2) выдает ошибку в доступе для database engine и reporting services и источником пишет является setup.rll. Как побороть? Не могу установить. Ставлю в режиме интеграции с sharepoint. help!!!

  5. Alex A says:

    Если дистрибутив скачивать с MSDN/TechNet, то ключ точно внутри в Defaultsetup.ini

  6. Alex A says:

    В отличии от свистопляски с дистрибутивами Windows 5.x, в SQL Server не бывает "явно интегрированных" дистрибутивов. То есть GUID пакета всегда и везде один. Наличие обновлений в папках CU и PCU важно, но не критично для удаления/модификации, – подойдет любой другой дистрибутив (та же платформа, язык и издание).

  7. Alex A says:

    Спасибо за комментарий. Могли бы подписаться, – дал бы приз за самый ценный коммент года. Без шуток.

    Дело в том, что у себя, я конечно, делал без слешей, которые образовались в процессе написания статьи. Более того, гм.. в сети, гм.. ну вы поищите интегрированные сборки и все сами поймете – они правильные ). Рус, англ. x86, x64, ia64 (хотя ia64 рус недоступны обновления публично).

    По поводу пункта 2). Для WS08R2 через несколько месяцев выйдет SQL08R2, там все в едином пакете.

    По третьему пункту – хотфиксы идут в виде трех файлов. Сам основной хотфикс, фикс к native client и фикс к Reporting Services. Последние два входят в первый (хотя бинарно, sqlncli.msi из общего фикса и отдельного отличаются, версия и исполняемые файлы после установки – одинаковы. То же с репортингом). Если есть что-то еще кроме клиента и репортинга отдельно – дайти знать, я не в курсе.

    Books Online в виде MSI я заменяю в основной папке, сейчас у меня автоматом ставится июльская версия.

    Буду рад продолжению дискуссии! Подписывайтесь только.

  8. fsv2k5 says:

    Главное, не потерять дистрибутив, вдруг при удалении/модификации инсталяции SQL потребует именно этот дистрибутив! 🙂

  9. Exotic Hadron says:

    Классная статья, спасибо, Алексей!

    Раз пошел такой сыр-бор с PackageID, что делать с обновлением SP1 over July CTP. У меня грешным делом на одной из серверных машин стоит июльский CTP. Ну, стоит себе и стоит, вроде есть не просит, а лишь работает аки сто спартанцев. Да вот незадача. С недавнего времени проведал про это WU, да как начал лепить — обновись до SP1, да обновись. И вот рад бы, да вот тебе, бабушка, а не обновление. Кажинный раз, как только обновление завершается успешно я получаю заветный "шшш-пок" с соответствующим уведомлением от WSUS/WU в Server 2008. Это наводит меня на мысль, что может быть проблема как раз в разных идентификаторах пакетов установки. Или?

    Спасибо.

  10. Exotic Hadron says:

    Дак она и идет явно мистически

    2009-06-01 15:00:03:583 916 1c50 Agent  *   Title = Microsoft SQL Server 2008 Service Pack 1 (KB968369)

    2009-06-01 15:00:03:583 916 1c50 Agent  *   UpdateId = {A4B3701C-E998-4D0E-873A-70281F8C6952}.101

    2009-06-01 15:00:03:583 916 1c50 Agent  *     Bundles 1 updates:

    2009-06-01 15:00:03:583 916 1c50 Agent  *       {FC209008-00D0-4785-8BAD-57FEAE760270}.101

    2009-06-01 15:04:12:051 916 1c50 Agent **  END  **  Agent: Installing updates [CallerId = AutomaticUpdates]

    2009-06-01 15:04:12:051 916 1c50 Agent *************

    2009-06-01 15:04:12:051 916 1af8 AU Install call completed.

    2009-06-01 15:04:12:051 916 1af8 AU  # WARNING: Install call completed, reboot required = Yes, error = 0x00000000

    2009-06-01 15:04:12:051 916 1af8 AU #########

    2009-06-01 15:04:12:051 916 1af8 AU ##  END  ##  AU: Installing updates [CallId = {647DC533-9E13-4028-B444-70452D293425}]

    2009-06-01 15:04:12:051 916 1af8 AU #############

    2009-06-01 15:04:12:051 916 1af8 AU Install complete for all calls, reboot  needed

    Возможно, я просто чего-то не понимаю…

  11. VMMR2 says:

    Стоит ли ждать в ближайшее время обещанного обновления статей по SCVMM и OpsMgr R2? Давненько обещали уже.

  12. Прохожий says:

    Ай-ай-ай. А проверить то что насоветовали? 😉

    вообщем несколько ошибок :

    1) _Внимательно_ прочитать статью :

    http://blogs.msdn.com/petersad/archive/2009/02/25/sql-server-2008-creating-a-merged-slisptream-drop.aspx

    и попробовать сделать по своему. Ваши строчки не будут работать :

    PCUSOURCE="C:SQLServer2008_Full_SP1_CUPCU"

    CUSOURCE="C:SQLServer2008_Full_SP1_CUCU"

    т.к. setup ругается на недопустимый сивол. Этот "недопустимый символ" – слэш в конце (Привет индийским программистам 🙂 ).

    2) Берём SqlSP1_setuphelp.chm из SP1 и читаем несколько вариантов :

    Вариант 1. Прямая установка последнего обновления с исходной версией программы установки SQL Server 2008:

    Вариант 2. Интегрированный пакет обновления Express Core Service Pack с накопительным обновлением.

    Вариант 3. Обновление файлов исходного носителя

    И если первый способ подойдёт для многих, то для установки MS SQL 2008 на Server 2008 R2 – только 3-й, проверено 🙂

    3) По HotFixes – помимо exe, там идёт несколько хотфиксов распаковываемых в .msi .

    И если с clients.msi (как то так) более менее понятно, то с одним файлом, которого нет в дистрибутиве – не понятно что делать 🙁

    Всё в качестве доброй и полезной критики.

  13. Прохожий says:

    1) Ну с первым разобрались.

    2) Я привел пример, что "интегрировать" обновление можно и по другому. Мало того, это уже описано, для тех кто, просто, читает ReadMe иногда 🙂 SQL08R2 – это уже _другой_ продукт. А SQL ставить нуна уже сегодня (сразу говорю, что не CTP, не beta пользователям не устанавливаю – моветон-с)

    3) Ну разберём на примере 4-х hotfix-ов для 32-х битной ситемы :

    Archive:  389408_intl_i386_zip.exe

     Length     Date   Time    Name

    ——–    —-   —-    —-

    153657680  31-08-09 18:51   SQLServer2008-KB971491-x86.exe

        3659  31-08-09 18:53   hotfix.txt

    ——–                   ——-

    153661339                   2 files

    С этим всё понятно и Вами описано.

    Archive:  389411_intl_i386_zip.exe

     Length     Date   Time    Name

    ——–    —-   —-    —-

     4612096  31-08-09 18:52   sqlncli.msi

        2187  31-08-09 18:52   hotfix.txt

    ——–                   ——-

     4614283                   2 files

    С этим не так все просто. Мало того что его надо положить в глубину каталога x86 (найдите сами – dir /s /b %DistrSQL2008%x86sqlncli.msi ), но и в ветку x64, т.к. x64 устанавливает как 64-х битную версию, так и 32-х битную.

    Archive:  389414_intl_i386_zip.exe

     Length     Date   Time    Name

    ——–    —-   —-    —-

    41390592  31-08-09 18:53   rsSharePoint.msi

        2187  31-08-09 18:53   hotfix.txt

    ——–                   ——-

    41392779                   2 files

    С этим тоже понятно и он 1-н (для каждой битности свой)

    Archive:  391490_intl_i386_zip.exe

     Length     Date   Time    Name

    ——–    —-   —-    —-

    123356160  30-08-09 23:38   RB2ClickOnce.msi

        2171  30-08-09 23:39   hotfix.txt

    ——–                   ——-

    123358331                   2 files

    А вот это не понятно куда девать. В дистрибутиве этого нет. Встаёт вопрос – куды вписать?

    Хммм … books Online через windows Update у меня поставилась годичной давности 🙁 :

    SQL Server 2008 Books Online (August 2008)

    Installation date: ‎28.‎08.‎2009 15:11

    Installation status: Successful

    P.S. "Моя фамилия вам ничего не скажет. Ну, Смоктуновский." (с) "Москва слезам не верит" 🙂 Хотя подписался 🙂

  14. прохожий says:

    Хммм … От коробки со Studio не откажусь 🙂

    Напишите в личку, мои ребята на Платформу пойдут (вы же там будете?) и заберут 🙂

  15. Аким says:

    Извините, не дочитал дальше, что файл DefaultSetup.ini нужно самому создавать. Правда это тоже странно, ведь я скачивал дистрибутив из личного кабинета, ключ вроде как закуплен на организацию. Правда обновления-то закачиваются инкогнито, может надо запрос на закачку обновлений формировать залогинившись в Live ID или куда?

  16. Denis_IT says:

    ключи
    PCUSOURCE=”C:SQLServer2008_Full_SP1_CUPCU”
    и
    CUSOURCE=”C:SQLServer2008_Full_SP1_CUCU”
    лучше заменить на
    PCUSOURCE=”.PCU”
    и
    CUSOURCE=”.CU”

    будет более универсальный дистрибутив

  17. Denis_IT says:

    ключи
    PCUSOURCE=”C:SQLServer2008_Full_SP1_CUPCU”
    и
    CUSOURCE=”C:SQLServer2008_Full_SP1_CUCU”
    лучше заменить на
    PCUSOURCE=”.PCU”
    и
    CUSOURCE=”.CU”

    будет более универсальный дистрибутив

Skip to main content