15/11/2007

You are currently browsing the daily archive for 15/11/2007.

Не за горами время выхода SQL Server 2008. На днях должна появиться очередная предварительная версия – CTP5, которая, ещё в более предварительном виде, уже доступна SQL Server MVP. Как все прекрасно понимают, предварительные версии отличаются от окончательного выпуска существенной нестабильностью в работе, многие компоненты могут работать не надёжно, или вообще быть отключены. Кроме того, само бетатестирование является методом испытания на прочность тестируемого программного обеспечения и может привести к потере работоспособности последнего. Одним из проявления частичной потери работоспособности SQL Server, с которым мне очень часто приходилось сталкиваться во время участия в программах бетатестирования SQL Server 2005 и его локализованной версии, является невозможность корректного удаления предварительной версии SQL Server. Причин для проявления такой проблемы может быть множество, в реальных условиях это может быть, к примеру, не корректное исправление в системном реестре или сбои дисковой подсистемы.
В этом году мне уже неоднократно приходилось устанавливать на испытательный полигон предварительные версии SQL Server 2008, и поскольку вероятность возникновения необходимости переустановки или удаления не поддающихся правильным способам программ резко возросла, я решил оставить тут (в основном для себя и для тех, кто занимается аналогичным тестированием) небольшую шпаргалку – путеводитель, по тем шагам, которые необходимо предпринять, для обмана программы установки SQL Server, чтобы она осуществляла установку так, как будто на компьютере никогда не был установлен SQL Server .
Сразу хочу предостеречь читателя от применения изложенных ниже методов на «боевой» системе. НИКОГДА ЭТОГО НЕ ДЕЛАЙТЕ!!! Внесение изменений в системный реестр операционной системы Windows чревато непредсказуемым поведением самой системы или установленного на этой системе программного обеспечения. То, что ниже рекомендуется, можно применять только на выделенном для тестовых целей компьютере, потеря информации которого или отказы в работе не могут нанести вред Вам и вашей организации. Эти меры можно рассматривать только как крайние меры, когда другие средства не помогли решению проблемы, а полная переустановка системы не желательна. Также, эти методики могут оказаться непригодными, если у Вас на компьютере установлено несколько экземпляров SQL Server, одной или разных версий.
Предлагаемый метод удаления или замены SQL Server 2005 не затрагивает вопросы сохранности обслуживаемых этим сервером баз данных и любых иных данных и настроек. Об этом следует позаботиться заранее, до того как вы преступите к перечисленным ниже шагам:


  1. Первым шагом попробуйте удалить все возможные компоненты SQL Server из оснастки установки удаления программ панели управления операционной системы. Чем больше Вам удастся удалить таким путём, тем больше шансов на успешное выздоровление. Очень Вам рекомендую удалить на время дальнейших манипуляций .NET Framework v2.0, при установке SQL Server 2005 он будет заново проинсталлирован, т.ч. потеря не велика, зато глючащие компоненты, которые это используют, Вам не помешают.
  2. Если какие-то компоненты нормальным способом удалить не удалось, попробуйте их удалить, запуская программу установки из командной строки, как это описано в поставляемом с дистрибутивом файле подсказки по установке. У меня дистрибутив валяется на флешке, вот где в нём этот файл:

      D:\SQLDEV2K5rus\Server\Setup\help\1049\ setupsql9.chm

    Поищите там статью с названием: «Как установить SQL Server 2005 из командной строки». В качестве примера, можно рассмотреть предложенные ниже варианты, хотя в документации есть много примеров на разные случаи жизни (кластерные конфигурации или удаление экзотики, например, полнотекстового поиска).
    Для удаления компонента ядра экземпляра по умолчанию можно использовать такую команду:

      start /wait E:\SQLDEV2K5rus\Server\setup.exe /qb INSTANCENAME=MSSQLSERVER REMOVE=SQL_Engine

    Для удаления всего экземпляра по умолчанию можно использовать такую команду:

      start /wait E:\SQLDEV2K5rus\Server\setup.exe /qb INSTANCENAME=MSSQLSERVER REMOVE=ALL

    Для переустановки компонент ядра и замене системных баз применим такой вызов программы установки:

      E:\SQLDEV2K5rus\ Server\Setup.exe /qb INSTANCENAME=MSSQLSERVER ADDLOCAL=SQL_Engine REINSTALLMODE=OMUS SKUUPGRADE=1 REBUILDDATABASE=1

  3. Если Вы читаете эту строку, значит предыдущий «рецепт» тоже не помог :( Тогда давайте выполним некоторые подготовительные шаги, которые могут оказаться не обязательными, но иногда из-за этих мелочей могут возникнуть проблемы совсем в неожиданных местах. Если в профиле пользователя, от имени которого Вы осуществляете манипуляции по удалению следов SQL Server, каталоги временных директорий TEMP и TMP были переназначены на отличающиеся от предлагаемых по умолчанию мест, лучше верните всё так, как оно было по умолчанию. Кроме того, иногда бывает полезно почистить временные директории. Запустите оснастку служб и остановите там все службы, которые могут относиться к SQL Server, и не забудьте закрыть потом эту оснастку и все подобные, основанные на консоли mmc оснастки.
  4. Если предыдущие шаги не помогли, придётся использовать запрещённый приём :( Засучите рукава, нам придётся лезть руками в системный реестр Windows, для чего стоит запустить программу regedit. ВАЖНО!: сделайте резервную копию системы и реестра! Перед внесением изменений в ключи реестра, делайте копии изменяемых веток! (надеюсь, это всё вам потом не понадобиться :). В оснастке установки и удаления программ Вы, возможно, ещё видите следы того, что ещё не удалось удалить. Чтобы убедиться, что это Вам не кажется, периодически нажимайте в окне этой оснастки клавишу F5, которая повторяет запрос к системному реестру, откуда и черпает информацию об установленном ПО и о том, где искать деиснтоллятор каждой из представленных в системе программ. Для этого оснастка пользуется двумя ветками реестра, которые также проверяются при установке нового ПО, чтобы убедиться в отсутствии более «свежих» версий или конфликтов. Нас тоже будут интересовать эти ветки реестра. Начнём, пожалуй, с той, которая непосредственно видна в оснастке установки и удаления программ панели управления.
    Нам нужно будет найти и открыть раздел реестра HKEY_LOCAL_MACHINE. В этом разделе хранятся настройки всех установленных на компьютере программ. Нужно перейти к папке Uninstall, относящейся к операционной системе. Расположена она по этому пути:

      HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\

    Тут подлежит удалению всё то, что относится к установленным ранее компонентам SQL Server. Для этого нужно просмотреть все имеющиеся там ключи. Проще всего, воспользоваться поиском по реестру начиная от корня этой папки, и искать, к примеру, слово «SQL». Однако, никто не знает, какие нас ждут сюрпризы в новых версиях, поэтому стоить полагаться только на свои глаза… В качестве примера подлежащего удалению ключа можно привести самый очевидный ключ:

      HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Microsoft SQL Server 2005

    Аналогичную работу нужно провести и в этой ветке:

      HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Products

    Вторым разделом реестра, который нам понадобиться, будет HKEY_CLASSES_ROOT. Это слабо структурированный раздел, поэтому нам придётся напрячься, и перейти к папке Installer, в которой сосредоточена информация об установленных программах, компонентах этих программ и обновлениях/заплатках для них. Нужно терпеливо и внимательно просмотреть все подветви в разделах этой папки: Features, Patches, и Products. Ищем и удаляем все ключи, которые относятся к SQL Server. Если Вы ещё не устанавливали обновлений и заплат, то искомые ключи будут скорее всего только в папке Products. Вот примеры удалённых мной когда то ключей:

      HKEY_CLASSES_ROOT\Installer\Patches\A339FCF7E60313B4A82FE3B9A8C43AB8
      HKEY_CLASSES_ROOT\Installer\Features\3B0D31EF391510B46AA17252235CFFCA

    (На этом месте я обычно уже, сгорая от нетерпения, пробую установить SQL Server поверх замаскированного удалениями в реестре экземпляра, но, увы, часто это не проходит)
    После успешного удаления всех упоминаний из перечисленных выше разделов и веток реестра, в оснастке установки и удаления программ Вы не должны больше видеть ничего, что относиться к SQL Server и его обновлениям. Также, не должно быть ничего относящегося к .NET Framework v2.0.
    Для верности, стоит почистить ещё ключи в разделах реестра, относящихся к настройкам и службам, вот перечень основных:

      HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server
      HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTS
      HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSFTESQLInstMap
      HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSOSOAP
      HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer
      HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSSQLSERVER
      HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\msftesql
      HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\msftesqlFD
      HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SQLSERVERAGENT

    После основательной чистки реестра, есть смысл перезагрузить операционную систему, чтобы изменения стали актуальны, а вычищенные службы не остались запущенными. Если Вам нужно экономить дисковое пространство, можете удалить каталоги, относящиеся к SQL Server и созданные во время установки. По умолчанию это:
      C:\Program Files\Microsoft SQL Server.
    Закончив с этим, можно приступить к установке SQL Server, как будто его никогда на компьютере установлено не было :)
    Если установка не прошла, проанализируйте журналы установки, которые можно обнаружить в двух местах, это некая папка в корне одного из присутствующих у Вас дисков, которая напоминает GUID, и в ней только один файл лога. Или это папка журналов установки, которая по умолчанию создаётся тут:
      C:\Program Files\Microsoft SQL Server\90\Setup Bootstrap\LOG
    Если журналы ничего не подсказывают, вернитесь в реестр и посмотрите, возможно Вы что-то пропустили (я всегда что-то пропускаю, там ведь так много всего). Если ничего не нашли, можно попробовать почистить Авгиевы конюшни зарегистрированных компонент, но, практика показывает, что переустановка системы занимает гораздо меньше времени. Вот эти подразделы:

      HKEY_CLASSES_ROOT\AppID
      HKEY_CLASSES_ROOT\Applications
      HKEY_CLASSES_ROOT\CLSID
      HKEY_CLASSES_ROOT\IntegrationServices.Configuration.90
      HKEY_CLASSES_ROOT\Microsoft SQL Replication Distributor 9.0
      HKEY_CLASSES_ROOT\Microsoft.AnalysisServices.Account

    и т.д.
  5. Надеюсь, опасные игры с реестром привели Вас к победе над проблемой :) Если это так и SQL Server установлен поверх неудаляемого до этого экземпляра, то нужно закрепить успех. Не удивляйтесь, но я предложу Вам теперь удалить все следы SQL Server 2005, воспользовавшись ПРАВИЛЬНЫМ инструментом, а именно, оснасткой установки и удаления программ панели управления Windows. Зачем это нужно? Это нужно для того, чтобы те огрехи и обманы, которые присущи предложенному выше методу НЕ правильного удаления не помешали в дальнейшем Вам наслаждаться таким замечательным продуктом, как SQL Server 2005. Если удаление и установка пройдут успешно, есть большая вероятность того, что предлагаемы в этой статье действия не принесут в дальнейшем никакого вреда.
  6. И последний шаг, напишите мне письмо и опишите в нём что сработало, а что нет, чтобы я мог внести в статью исправления или дополнения, могущие оказаться полезными тем, кто будет вынужден воспользоваться этим способом после Вас :)

В тему: