Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Azure DevOps Server 2022 | Azure DevOps Server 2020 | Azure DevOps Server 2019
Требования
TfsPreUpgrade поддерживается только для развертываний Team Foundation Server, которые:
- У вас есть соответствующие базы данных коллекции в выпуске SQL Server Enterprise.
- Имеют соответствующие базы данных коллекции в 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 можно скачать здесь.
Что делает TfsPreUpgrade.exe?
TfsPreUpgrade.exe выполняет следующие действия:
- Включите сжатие для небольшого количества таблиц, которые не были сжаты в 2013 году, но будут в 2015 году.
- Сканирование и исправление очень редкого, но хорошо понятного повреждения данных в данных управления версиями TFS.
- Создайте новые таблицы и перенесите существующие данные в них.
- Создание триггеров.
- Обновите хранимые процедуры.
- Создание индексов. (Корпоративные выпуски 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по-прежнему возникают проблемы с производительностью, можно использовать команду TfsPreUpgrade.exe Revert, чтобы отменить большинство действий, выполняемых командой Run. Повтор операции Revert удалит все триггеры, установленные командой Run, и все созданные ею новые таблицы и т. д. О действиях, выполняемых командой Run, которые не удаляются при Revert, см. ниже.
Операции TFVC, которые имеют дело с очень большим количеством элементов, скорее всего, негативно влияют на триггеры, которые TfsPreUpgrade.exe создает. Избегайте этих операций TFVC, если возможно, при выполнении TfsPreUpgrade.exe и до завершения автономного обновления до TFS 2015.
- Создание, удаление и переименование ветвей.
- Удалить операции, затрагивающие множество элементов.
- Удаление проектов, использующих TFVC.
Можно ожидать, что выполнение этих операций займет по крайней мере в два раза больше времени при активированных триггерах TfsPreUpgrade.
Как запустить TfsPreUpgrade.exe?
Рекомендуемая процедура выполнения TfsPreUpgrade.exe:
Скачайте TfsPreUpgrade.exe. Обратите внимание, что компьютер, на котором устанавливается TfsPreUpgrade, не важен до тех пор, пока он может получить доступ к соответствующим экземплярам SQL , он поставляется со всеми его зависимостями.
Распакуй его в локальный каталог.
Определите, на каких базах данных коллекции вы хотите запустить TfsPreUpgrade.exe. Он может выполняться в любых базах данных коллекции без негативного влияния на их возможность обновления, но обычно требуется только для баз данных, которые достаточно большие, чтобы требовать значительное время простоя во время автономного обновления. Корпорация Майкрософт рекомендует использовать TfsPreUpgrade.exe в базах данных размером выше 1 ТБ.
Как пользователь, который является системным администратором в экземпляре SQL (TfsPreUpgrade устанавливает несколько трассировочных флагов во время выполнения), выполните команду "Run":
TfsPreUpgrade.exe выполнить /TargetDatabaseNames:"{экземпляр SQL}; {Имя базы данных коллекции}"
Если вы хотите запустить TfsPreUpgrade.exe в более чем одной базе данных коллекции, можно либо использовать несколько вызовов TfsPreUpgrade.exe (в этом случае они будут выполняться параллельно), либо указать в одном вызове несколько SQL-инстансов или строки баз данных коллекции через запятую (в этом случае они будут выполняться последовательно).
TfsPreUpgrade.exe будет выполняться достаточно долгое время в зависимости от размера базы данных коллекций, против которой оно выполняется. Оно будет сообщать о прогрессе по мере выполнения, чтобы вы могли получить некоторое представление о том, что уже сделано и сколько времени осталось. После завершения TfsPreUpgrade.exe триггеры, установленные им, будут обеспечивать постоянное перенаправление любых дополнительных изменений, связанных с работой сервера в режиме онлайн, в перенесённые таблицы. Таким образом, перед выполнением автономного обновления до TFS 2015 не требуется выполнять его повторно.
Статистика обработки кода
Один из расширенных вариантов, которые можно рассмотреть при выполнении TfsPreUpgrade.exe, — это пропустить миграцию статистики изменений кода, старше определенного порогового значения. Статистика изменения кода вычисляется фоновым процессом при внесении изменений в TFVC и хранится в одной из таблиц, перенесённых TfsPreUpgrade.exe. Затем эти данные передаются в хранилище и куб, а затем могут использоваться в отчетах. Подробнее см. здесь.
Если старая статистика обработки кода не интересна для вас (или если любая статистика оттока кода не интересна для вас), можно сэкономить некоторое время во время выполнения TfsPreUpgrade.exe и последующего выполнения автономного обновления, пропуская миграцию статистики старше заданной даты. Это можно сделать с помощью необязательного параметра /SkipCodeChurnBefore в команде 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 Revert.
Заблокированные операции
В начале выполнения TfsPreUpgrade.exe ряд триггеров безопасности создается для блокировки операций, которые были разрешены TFS 2013, но больше не разрешены TFS 2015, или которые приведут к проблемам в присутствии триггеров, установленных в TfsPreUpgrade.exe. К ним относятся:
- Удаление проектов. Не рекомендуется удалять проекты после запуска TfsPreUpgrade.exe в базе данных коллекции. Если удалить проект, он завершится сбоем перед завершением удаления, оставив проект в состоянии "Удаление". Удаление проекта снова станет доступно после обновления до TFS 2015.
- Создание рабочих областей со ссылками на корневые папки, которые не существуют. Они завершаются ошибкой TF10169. Обратите внимание, что один из сценариев, в котором это может возникнуть, связан с определениями сборки, чьи шаблоны рабочих областей ссылаются на несуществующие корневые папки. В таких сценариях сборки могут завершиться сбоем при создании рабочей области с указанной ошибкой. Этот сценарий по-прежнему не поддерживается в TFS 2015 из-за изменений, связанных с переименованием проекта, но завершится сбоем с более актуальным сообщением об ошибке.
- Вызов VersionControlServer.CreateTeamProjectFolder() через код, написанный для клиента TFS. Это завершится ошибкой TF10169. Этот сценарий по-прежнему останется неподдерживаемым в TFS 2015 из-за изменений, связанных с переименованием командного проекта, но будет завершаться с более релевантным сообщением об ошибке.
Исключения для возврата TfsPreUpgrade.exe
Выполнение TfsPreUpgrade.exe имеет ряд побочных эффектов, которые не удаляются при выполнении TfsPreUpgrade.exe revert. В большинстве случаев любое предварительное выделение пространства для базы данных и (или) журнала транзакций, выполняемого TfsPreUpgrade.exe, не будет отменено, что означает, что файлы базы данных могут быть значительно больше, чем до запуска TfsPreUpgrade.exe. Однако дополнительное пространство будет неиспользуемо, так как будут удалены дополнительные таблицы, созданные TfsPreUpgrade.exe. Мы рекомендуем оставить это пространство, так как оно, естественно, будет заполнено по мере того, как размер данных в файлах базы данных увеличивается, и потому что оно потребуется для обновления до TFS 2015 в конечном итоге.
Другие побочные эффекты, которые необратимы, не являются значительными и перечислены здесь только для вашей информации. Эти изменения были бы внесены обновлением до TFS 2015 в любом случае, и не должны иметь никакого влияния на функционирование сервера или на его окончательное обновление.
- Любые повреждения, обнаруженные и исправленные в данных управления версиями TFS, не будут отменены.
- Столбец, добавленный в tbl_Version с помощью скрипта обнаружения повреждения и исправления, не будет удален.
- Таблицы, для которых включено сжатие, не будут отключены снова.