Недавно мне потребовалось обновить SQL 2005 до SQL 2008 R2. Как оказалось на MS нет дистрибутивов SQL 2008 R2 с интегрированными сервис паками (либо я очень плохо искал). Будучи существом ленивым, я решил интегрировать сервис пак в оригинальный образ. На просторах интернета была найдена соответствующая статья, поэтому данный пост всего лишь её перевод. Кто хочет читать оригинал, идет в самый низ и нажимает на ссылку. Внимание, в статье описывается интеграция именно SP1. Так как в настоящее время существует SP2, и даже SQL 2012 то статья немного устарела, но сообщать мне об этом не нужно
Далее необходимые шаги для интеграции SP1:
1. Копируем содержимое оригинального образа SQL Server 2008 R2 в директорию C:\SQLServer2008R2_SP1
2. Скачиваем SQL Server 2008 R2 SP1 для всех архитектур. Нам необходимы следующие пакеты:
- SQLServer2008R2SP1-KB2528583-IA64-ENU.exe
- SQLServer2008R2SP1-KB2528583-x64-ENU.exe
- SQLServer2008R2SP1-KB2528583-x86-ENU.exe
3. Извлекаем их содержимое в директорию C:\SQLServer2008R2_SP1\SP следующим образом:
- SQLServer2008R2SP1-KB2528583-IA64-ENU.exe /x:C:\SQLServer2008R2_SP1\SP
- SQLServer2008R2SP1-KB2528583-x64-ENU.exe /x:C:\SQLServer2008R2_SP1\SP
- SQLServer2008R2SP1-KB2528583-x86-ENU.exe /x:C:\SQLServer2008R2_SP1\SP
4. Копируем Setup.exe из директории с извлеченным . Например с помощью команды robocopy:
- robocopy C:\SQLServer2008R2_SP1\SP C:\SQLServer2008R2_SP1 Setup.exe
6. Копируем все файлы, кроме Microsoft.SQL.Chainer.PackageData.dll, из директории C:\SQLServer2008R2_SP1\SP\<architecture> to C:\SQLServer2008R2_SP1\<architecture> для обновления оригинальных файлов:
- robocopy C:\SQLServer2008R2_SP1\SP\x86 C:\SQLServer2008R2_SP1\x86 /XF Microsoft.SQL.Chainer.PackageData.dll
- robocopy C:\SQLServer2008R2_SP1\SP\x64 C:\SQLServer2008R2_SP1\x64 /XF Microsoft.SQL.Chainer.PackageData.dll
- robocopy C:\SQLServer2008R2_SP1\SP\ia64 C:\SQLServer2008R2_SP1\ia64 /XF Microsoft.SQL.Chainer.PackageData.dll
7. Проверяем имеется ли у нас файл DefaultSetup.INI в следующих диреториях:
- C:\SQLServer2008R2_SP1\x86
- C:\SQLServer2008R2_SP1\x64
- C:\SQLServer2008R2_SP1\ia64
Если файл DefaultSetup.INI имеется, добавляем в него строку:
PCUSOURCE=".\SP"
Если файла нет, создаем его и добавляем следующеме строки:
;SQLSERVER2008 R2 Configuration File
[SQLSERVER2008]
PCUSOURCE=".\SP"
и копируем в данные директории
- C:\SQLServer2008R2_SP1\x86
- C:\SQLServer2008R2_SP1\x64
- C:\SQLServer2008R2_SP1\ia64
Данный файл служит для того, чтобы программа установки знала где расположены файлы сервис пака.
8. Зпускаем setup.exe и ставим или обновляем SQL.
Как узнать что интеграция работает:
1) В окне Installation Rules успешно проходит тест "Update Setup Media Language Rule":
2) В окне Ready to Install в поле Action есть оповещение (“Slipstream”):
3) В логе установке присутствует параметр PCUSource:
Надеюсь данная статья будет кому-либо полезна. С оригиналом можно ознакомиться по этой ссылке.