Использование Тфспреупграде для сокращения времени простоя

Azure DevOps Server 2020 | Azure DevOps Server 2019 | TFS 2018 — TFS 2013

Примечание

Предложение Azure DevOps Server раньше называлось Visual Studio Team Foundation Server.

Требования

Тфспреупграде поддерживается только для развертываний Team Foundation Server, которые:

  • В настоящее время находится на сервере TFS 2013 с обновлением 4 или 5.
  • Имеют соответствующие базы данных коллекций в выпуске Enterprise SQL Server.
  • Применяйте соответствующие базы данных коллекций на SQL Server 2012 с пакетом обновления 1 (SP1) или более SQL Server 2014 CU3 (или более поздней версии).

Дополнительную информацию см. ниже.

Введение

Team Foundation Server 2015 включает изменения схемы в большое количество таблиц для поддержки переименования проектов. В результате обновление до Team Foundation Server 2015 может занять значительное время в зависимости от размера базы данных. Поскольку обновления TFS находятся вне сети, корпорация Майкрософт предоставляет средство, TfsPreUpgrade.exe, которое можно использовать для выполнения наиболее ресурсоемких частей работы по обновлению до TFS 2015, пока развертывание TFS 2013 остается в сети. Не нужно запускать это средство перед обновлением. Рекомендуется запускать его для коллекций баз данных, размер которых превышает 1 ТБ, чтобы сократить время, в течение которого TFS будет работать в автономном режиме.

Обычно TfsPreUpgrade.exe работает путем создания новых копий таблиц, которые, скорее всего, затронут изменениями схемы, присутствующими в TFS 2015, а затем переносят данные из исходных таблиц в новые копии. Чтобы справиться с текущими действиями пользователя, он также помещает триггеры на месте, которые сохраняют изменения в исходных таблицах, передаваемых в новые копии. Корпорация Майкрософт оптимизирована TfsPreUpgrade.exe для того, чтобы свести к сведению влияние на производительность серверов и пользователей, но это может оказать влияние на производительность. Для больших операций, таких как система управления версиями Team Foundation (TFVC), создающих и удаляющих ветви, это может привести к неудовлетворенности пользователей и даже к времени ожидания базы данных. Полный список операций, о которых оказывает существенное влияние, см. ниже.

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

TfsPreUpgrade.exe Estimate /TargetDatabaseNames:"{SQL Instance};{Collection Database Name}"

Из-за того, как это работает, TfsPreUpgrade.exe требует стабильной исходной и целевой схем базы данных. Таким образом, его можно запустить только для баз данных TFS 2013 с обновлением 4 и 5. Если развертывание TFS еще не включено в TFS 2013 с обновлением 4 или 5, перед запуском TfsPreUpgrade.exe необходимо обновить до одной из этих версий. TFS 2013 с обновлением 5 можно скачать здесь: https://www.visualstudio.com/downloads/download-visual-studio-vs .

Что TfsPreUpgrade.exe делать?

TfsPreUpgrade.exe будет:

  • Включите сжатие для небольшого числа таблиц, которые не были сжаты в 2013, но будут находиться в 2015.
  • Проверьте и исправьте очень редкие, но хорошо понятные повреждения данных в данных системы управления версиями TFS.
  • Создайте новые таблицы и перенесите в них существующие данные.
  • Создание триггеров.
  • Обновление хранимых процедур.
  • Создание индексов. (Выпуски Enterprise SQL Server необходимы для того, чтобы эти операции выполнялись в режиме в сети.)

Поскольку он создает новые таблицы для переноса данных в интерактивном режиме, TfsPreUpgrade.exe требует потенциально большого объема дополнительного места на диске для данных и журналов транзакций. В ходе выполнения TfsPreUpgrade.exe будет проверяться, доступен ли уже такой объем пространства. Если это не так, будет предпринята попытка предварительно выделить пространство. В случае сбоя будет выдаваться ошибка. TfsPreUpgrade.exe может предоставить оценку того, сколько пространства будет пытаться предварительно выделить, выполнив команду оценки.

TfsPreUpgrade.exe Estimate /TargetDatabaseNames:"{SQL Instance};{Collection Database Name}"

Поскольку TfsPreUpgrade.exe выполняет потенциально дорогостоящие операции (копирование данных, создание индексов и т. д.), это может повлиять на производительность сервера. Корпорация Майкрософт не предполагает, что это воздействие не является значительным, и мы оптимизированы операции, выполняемые TfsPreUpgrade.exe, чтобы снизить влияние на серверы и пользователей. Если во время работы TfsPreUpgrade.exe возникают проблемы с производительностью, ее всегда можно отменить, нажав клавиши CTRL + C. TfsPreUpgrade.exe записывается, чтобы отменить выполняемые операции. Он не должен оставлять базу данных в неисправном состоянии и всегда может повторно запускаться несколько раз, если она завершит работу до завершения.

Поскольку TfsPreUpgrade.exe создает триггеры, которые сохраняют исходную и новую копии таблиц в синхронизированном виде после первоначальной миграции, даже после отмены TfsPreUpgrade.exe возможно, это будет повлиять на производительность сервера. Опять же, корпорация Майкрософт не предполагает, что это воздействие не является значительным, и мы оптимизированы производительность этих триггеров, чтобы свести к сведению влияние на серверы и пользователей. Если после отмены TfsPreUpgrade.exe возникают проблемы с производительностью, для отмены большинства действий, выполняемых командой run, можно использовать команду TfsPreUpgrade.exe revert. Отмена изменений приведет к удалению всех триггеров, установленных с помощью команды Run, приведет к удалению всех созданных им таблиц и т. д. Набор действий, выполняемых запуском, которые не отменяются при возврате, см. ниже.

Операции TFVC, работающие с очень большим количеством элементов, скорее всего, будут негативно повлиять на триггеры, создаваемые TfsPreUpgrade.exe. Если это возможно, Избегайте этих операций TFVC, пока выполняется TfsPreUpgrade.exe и до завершения автономного обновления до TFS 2015.

  • Создание, удаление и переименование ветвей.
  • Операции уничтожения, влияющие на большое количество элементов.
  • Удаление проектов, использующих TFVC.

Если вам нужно выполнить эти операции, вы можете ждать, чтобы они захотя бы дважды выполнялись с триггерами Тфспреупграде.

Разделы справки запустить TfsPreUpgrade.exe?

Рекомендуемая процедура для запуска TfsPreUpgrade.exe:

  1. Скачайте TfsPreUpgrade.exe. Обратите внимание, что компьютер, на котором устанавливается Тфспреупграде, не имеет значения, пока он может получить доступ к соответствующим экземплярам SQL Server, он поступает в архив со всеми зависимостями.

  2. Распакуйте его в локальный каталог.

  3. Определите, для каких баз данных коллекций вы хотите выполнять TfsPreUpgrade.exe. Он может выполняться в любой базе данных коллекций без негативного влияния на их способность к обновлению, но обычно требуется только для баз данных, которые достаточно велики, чтобы требовать значительного времени простоя во время автономного обновления. Корпорация Майкрософт рекомендует использовать TfsPreUpgrade.exe в базах данных, размер которых превышает 1 ТБ.

  4. В качестве пользователя, который является администратором экземпляра SQL (Тфспреупграде задает несколько флагов трассировки во время выполнения), выполните команду Run:

    TfsPreUpgrade.exe запустить/Таржетдатабасенамес: "{экземпляр SQL}; {Имя базы данных коллекции}

  5. Если вы хотите запустить TfsPreUpgrade.exe более чем в одной базе данных коллекции, можно использовать несколько вызовов TfsPreUpgrade.exe (в этом случае они будут выполняться параллельно) или можно указать несколько строк экземпляра или базы данных SQL с разделителями-запятыми в одном вызове (в этом случае они будут выполняться последовательно).

TfsPreUpgrade.exe будет выполняться в течение некоторого времени в зависимости от размера баз данных коллекций, к которым она выполняется. Он будет сообщать о ходе выполнения, чтобы иметь представление о том, насколько далеко он и сколько времени может остаться. После завершения TfsPreUpgrade.exe триггеры, которые он устанавливает, сохранит все дополнительные изменения, внесенные из-за того, что сервер перейдет в оперативный режим в перенесенных таблицах. Таким образом, перед переходом в автономный режим до TFS 2015 нет необходимости выполнять его повторно.

Статистика по обработке кода

Один дополнительный параметр, который можно учесть при выполнении TfsPreUpgrade.exe, пропускает перенос статистики обработки кода, которая старше порогового значения. Статистика по обработке кода вычисляется фоновым процессом, когда изменения возвращаются в TFVC и хранятся в одной из таблиц, перенесенных TfsPreUpgrade.exe. Затем эти данные передаются в хранилище и куб, а затем могут использоваться в отчетах. Дополнительные сведения см. в этом разделе .

Если старая статистика по обработке кода не интересна (или если какая-либо статистика по обработке кода не интересна вам), можно сэкономить время во время выполнения TfsPreUpgrade.exe и последующее выполнение автономного обновления, пропуская миграцию статистики старше заданной даты. Это можно сделать с помощью необязательного параметра/Скипкодечурнбефоре для команды Run. Например, если вы хотите пропустить перенос статистики по обработке кода старше 1 января 2015, можно использовать следующую командную строку:

TfsPreUpgrade.exe Run /TargetDatabaseNames:"{SQL Instance};{Collection Database Name}" /SkipCodeChurnBefore:"1/1/2015"

При использовании этого параметра соответствующая статистика по обработке кода не будет перенесена и будет отсутствовать в хранилище и Кубе после автономного обновления.

Автономное обновление до TFS 2015

Теперь вы готовы выполнить автономное обновление до TFS 2015, для которого можно выполнить обычные процедуры обновления TFS.

Дополнительные сведения о некоторых нечасто выполняемых операциях, заблокированных TfsPreUpgrade.exe, и об изменениях в базе данных, внесенных TfsPreUpgrade.exe, которые не были отменены при выполнении TfsPreUpgrade.exe отменить, см. ниже.

Заблокированные операции

На ранних этапах выполнения TfsPreUpgrade.exe для блокировки операций, которые были разрешены TFS 2013, предусмотрено несколько триггеров "безопасность", но которые больше не разрешены TFS 2015 или которые могут вызвать проблемы при наличии триггеров, TfsPreUpgrade.exe. К ним относятся следующие:

  1. Удаление проектов. Не рекомендуется удалять проекты после выполнения TfsPreUpgrade.exe в базе данных коллекции. Если удалить проект, он завершится ошибкой перед тем, как будет завершено удаление, что приведет к удалению проекта в состоянии удаления. Удаление проекта будет поддерживаться снова после обновления до TFS 2015.
  2. Создание рабочих областей со ссылками на несуществующие корневые папки. При этом произойдет сбой с ошибкой TF10169. Обратите внимание, что в случаях, когда это может быть, в определения сборки, шаблоны рабочей области которых ссылаются на корневые папки, которые не существуют. в этих сценариях сборки могут завершиться ошибкой во время создания рабочей области с указанной ошибкой. Этот сценарий останется неподдерживаемым в TFS 2015 из-за изменений, связанных с переименованием проекта, но при этом произойдет сбой с более соответствующим сообщением об ошибке.
  3. Вызов VersionControlServer. Креатетеампрожектфолдер () с помощью кода, написанного для клиентской объектной модели TFS. Это приведет к сбою с ошибкой TF10169. Этот сценарий останется неподдерживаемым в TFS 2015 из-за изменений, связанных с переименованием командного проекта, но при этом произойдет сбой с более соответствующим сообщением об ошибке.

Исключения TfsPreUpgrade.exe восстановить

Выполнение TfsPreUpgrade.exeного запуска имеет ряд побочных эффектов, которые не были отменены при выполнении TfsPreUpgrade.exe отмены изменений. Наиболее интересен, что предварительное выделение базы данных и/или пространства журнала транзакций, выполненных TfsPreUpgrade.exe, не будет отменено, то есть файлы базы данных могут быть значительно больше, чем до запуска TfsPreUpgrade.exe. Однако дополнительное пространство будет неиспользуемым, так как дополнительные таблицы, созданные TfsPreUpgrade.exe, будут удалены. Мы рекомендуем размещать это пространство на месте, так как оно будет заполняться так же, как и размер данных в файлах базы данных, и потому, что в итоге потребуется обновление до TFS 2015.

Другие побочные эффекты, которые не отменены, не затрагиваются и перечисляются здесь только для ваших сведений. Эти изменения были сделаны обновлением до TFS 2015 в любом случае и не должны влиять на функционирование сервера или на его конечном обновлении.

  1. Все повреждения, обнаруженные и исправленные в данных системы управления версиями TFS, не будут отменены.
  2. Столбец, добавленный в tbl_Version скриптом обнаружения и исправления повреждений, не будет удален.
  3. Таблицы, для которых включено сжатие, не будут отключены.