|
|
|||||||||||||||||||||||||||||
|
SQL: вопросы и ответы. Предотвращение перезагрузок, установка нескольких обновлений и другоеИсточник: oszone Нэнси Мичелл (Nancy Michell)
Предотвращение перезагрузокВопрос. Как ограничить число перезагрузок при установке исправлений и других дополнений к SQL Server и к серверной операционной системе в целом?
Ответ. Во-первых, нужно учесть, что перезагрузки, происходящие после установки, довольно редко обуславливаются кодом программы установки. Чаще всего они происходят из-за блокировки файлов. Иными словами, если программа установки безуспешно пытается обновить файлы, которые в этот момент используются (блокируются) другим приложением или операционной системой, то выполняется перезагрузка. Наиболее очевидный способ избавиться от необходимости перезагрузки - сделать так, чтобы к обновляемым файлам не обращались сторонние процессы. Как этого достичь? Во-первых, нужно узнать, какие именно файлы во время инсталляции были заняты и заблокированы. Для этого откройте раздел реестра HKLM\system\currentcontrolset\control\sessionmanager\pendingfilerenameoperations. С помощью этого раздела вы сможете решить сразу две задачи: убедиться в том, что запрос на перезагрузку действительно был подан вследствие блокировки, и узнать перечень заблокированных файлов. Анализ содержимого упомянутого раздела между установкой и перезагрузкой позволит вам разобраться в причинах перезагрузки и предпринять меры к исключению аналогичных ситуаций в ходе последующих сеансов установки. В этом разделе вам могут встретиться записи двух типов. Если файл был заблокирован для чтения, ему соответствует однострочная запись; это значит, что обновленный файл уже записан на диск и теперь необходимо удалить его временную копию. Если файл был заблокирован для записи, соответствующая ему запись состоит из двух строк; следовательно, обновление еще не произошло, состояние приложения неизвестно и обращаться к нему не следует. Записи такого типа отражают заминку в ходе установки. В таком случае в одной строке указывается существующий файл, а во второй - временный файл (после перезагрузки первый заменяется вторым). Содержание следующего этапа зависит от многих факторов, но суть в том, чтобы определить, какое ПО обращается к заблокированным файлам. По возможности воспользуйтесь средствами контроля зависимостей или базой данных DLL HELP в системе MSDN® (см. support.microsoft.com/kb/815065 (на английском языке). Если программному обеспечению, которое обращается к файлу, соответствует та или иная служба, остановите её вручную и повторите проверку. Если речь идет о приложении, закройте его и проведите повторную проверку. В некоторых случаях к одному файлу обращаются сразу несколько приложений; если это так, нужно закрыть их все. Результатом таких проверок (которые следует проводить в тестовой среде) должен стать перечень приложений и служб, которые в рабочей среде необходимо останавливать перед установкой. Таким образом, необходимость перезагрузки в рабочей среде можно будет исключить, так как файлы, с которыми работает программа установки, не будут блокироваться сторонним ПО. По завершении установки все ранее остановленное ПО нужно запустить вновь. К счастью, схемы блокировки обычно не подвержены серьезным изменениям. Стоит единожды проследить такую схему и, скорее всего, при работе с системой в долгосрочной перспективе вам удастся избежать множества перезагрузок. Есть еще одно правило, о котором стоит упомянуть. Иногда в одной системе устанавливается сразу несколько версий SQL Server™ или других продуктов, при этом у них даже могут быть разные уровни версий. В подобных ситуациях обновление всегда следует начинать с самой свежей версии. Скорее всего, в таком случае все необходимые файлы будут заменены последними версиями, а остальные экземпляры продукта не станут блокировать их. К примеру, если в системе установлено три экземпляра SQL Server 2000 SP3, при обновлении первого из них до SP4 файл MSXML3.dll должен быть заменен, а значит, нужна перезагрузка. Предположим, что вы её выполнили. При обновлении двух оставшихся экземпляров до SP4 перезагрузка не потребуется - ведь новая версия MSXML3.dll уже установлена. Аналогичное правило действует и в других случаях: при обновлении экземпляров SQL Server 2005 перед SQL Server 2000, SQL Server 2000 перед SQL Server 7.0 и так далее. Это универсальная, фактически работающая методика минимизации перезагрузок. Если рассуждать стратегически, группы разработчиков корпорации Майкрософт уже долгое время трудятся над тем, чтобы исключить или по меньшей мере ограничить число перезагрузок в различных ситуациях. Так как тема этой статьи - "SQL, вопросы и ответы", рассмотрим в качестве примера SQL Server. При подготовке версии SQL Server 2005 разработчики SQL Server разбили код компонентов MDAC (Microsoft® Data Access Components), необходимый для функционирования SQL Server, на SQLNCLI (новые файлы), отказавшись от обновления собственно MDAC, при этом компоненты MDAC были возвращены в распоряжение ОС. К чему это привело? Дело в том, что операционная система Windows® сама обращается к компонентам MDAC и блокирует их файлы. По этой причине установка пакетов обновления SQL Server и других пакетов традиционно сопровождалась перезагрузкой. Теперь SQL Server обновляет собственную версию MDAC, не обращаясь к файлам MDAC, применяемым операционной системой, следовательно, необходимость перезагрузки отпадает. Более того - в программе установки SQL Server 2005 SP1 есть встроенное средство контроля зависимостей и предусмотрена возможность приостановки. Это средство показывает перечень заблокированных файлов и предполагаемые источники блокировки; вы можете сразу остановить ПО, блокирующее необходимые файлы, и продолжить установку без перезагрузки. Таким образом, у вас появляется возможность предпринять меры к предотвращению перезагрузки в реальном времени, не обращаясь к тестовой среде. Естественно, при необходимости, а также при работе в несопровождаемом режиме можно продолжить установку без закрытия блокирующего ПО и выполнить перезагрузку. Как видите, выявить источники блокировки файлов теперь очень просто! Помимо прочего, технология Microsoft Installer сейчас значительно эффективнее работает с разделом реестра PendingFileRenameOperations (PFR). Если вы помните, при обнаружении в вышеупомянутом разделе реестра записей о любых файлах процесс установки SQL Server 2000 блокировался. Что же касается программы установки SQL Server 2005, то она блокируется только если файлы относятся к SQL Server (и продолжение установки может привести к конфликту), но даже в таких случаях ей зачастую удается обратиться к разделу PFR и обновить его содержимое напрямую, тем самым избежав перезагрузки. На том или ином уровне эта технология реализована как в MSI, так и в update.exe - двух стандартных на сегодняшний день программах установки от Майкрософт, с помощью которых выполняются все обновления. Каковы известные факторы, приводящие к перезагрузке? В первую очередь, это файл MSXML3.dll. Он постоянно заблокирован службой Windows SVCHost, и при любом обращении к этой службе перезагрузки не избежать. Аналогичная ситуация характерна для большинства стеков MDAC (mdac_typ.exe). К счастью, в Windows Server® 2003, Windows XP SP2 и последующих версиях ОС компоненты MDAC являются "разделенными". Разработчики SQL Server здорово потрудились, отделив msxmlsql.dll, в результате чего обновления SQL Server обычно не сопряжены с перезагрузкой, хотя иногда её все же не избежать. В таких ситуациях трудно предложить какое-то решение - закрыть службу SVCHost и продолжить обновление невозможно. Кроме того, стоит упомянуть об особенностях процесса деинсталляции в исполнении пакетов update.exe. При деинсталляции они блокируют (естественно, вне разделов PFR) наличные файлы программы установки. В результате исполнение других пакетов update.exe до перезагрузки, при которой такая блокировка снимается, становится невозможным. С этим вряд ли что-то можно поделать - разве что планировать перезагрузку после деинсталляции исправлений. Другая проблема - периодичность. Не все программы обращаются к тому или иному файлу постоянно. На самом деле большинство общих библиотек DLL используются не постоянно, а в отдельные моменты времени; это значит, что другие программы могут обращаться к ним только по необходимости, в зависимости от своей рабочей нагрузки и путей, заданных в коде. В такой ситуации даже десятикратные испытания могут не выявить заблокированных файлов, но не исключено, что впоследствии они совершенно неожиданно обнаружатся в рабочей среде. Увы, с этим ничего нельзя поделать. Попробуйте максимально приблизить тестовую среду к рабочей, в том числе смоделировать рабочую нагрузку (впрочем, к этому нужно стремиться всегда) и провести столько испытаний, сколько необходимо для выявления подобных явлений. Установка пакетов обновления и отдельных обновлений ОС всегда сопряжена с перезагрузкой. Следует иметь в виду, что в версиях ОС нижнего уровня (Windows 2000, Windows XP и во всех предшествующих версиях) установка считается незавершенной вплоть до завершения перезагрузки - даже если раздел реестра pendingfilerenameoperations пуст. Существуют операции, направленные на регистрацию пакетов исключений (exception packages), которые могут исполняться во время перезагрузки для установки кода. Они не входят в состав пакетов обновления; это встроенные команды операционной системы, которые запускаются сценариями обновления для сохранения работоспособности отдельных блоков кода. Наконец, раздел PFR не выполняет ни проверок версий файлов, ни упорядочивания путем сериализации. Иными словами, он запускает процесс замены файлов в том порядке, в котором они перечислены. С другой стороны, на жестком диске они сохраняются в порядке "от последнего завершенного" (в противоположность порядку "от первого запущенного"). Это вполне разумное решение, но оно также означает, что при наличии в рамках одного пути двух копий одного и того же файла, указывающих на разные его версии, перезагрузка приведет к произвольному результату. Столкнувшись с подобной ситуацией, обязательно исправьте ее. Если вы не уверены, что нужно сделать, запустите после перезагрузки обе программы установки. При правильном подборе файлов ни один из них не приведет к сбою. При неправильном подборе запуск пакета с нужным файлом поможет исправить ситуацию. Честно говоря, это и быстрее и безопаснее, чем попытки определить желаемый результат.
|
Главная страница - Программные продукты - Статьи - СУБД и хранилища данных, Microsoft |
Распечатать »
Правила публикации » |
Написать редактору | |||
Рекомендовать » | Дата публикации: 30.08.2012 | |||
|
Новости по теме |
Microsoft заменит приложения "Почта" и "Календарь" на Outlook с нового года
|
Рассылки Subscribe.ru |
Статьи по теме |
Microsoft внезапно отменил санкции против России
|
Новинки каталога Download |
Исходники |
Документация |