Uso de TfsPreUpgrade para reducir el tiempo de inactividad

Azure DevOps Server 2020 | Azure DevOps Server 2019 | TFS 2018 - TFS 2015

Nota

Azure DevOps Server anteriormente se denominaba Visual Studio Team Foundation Server.

Requisitos

TfsPreUpgrade solo se admite para Team Foundation Server implementaciones que:

  • Actualmente se encuentran en TFS 2013 Update 4 o Update 5.
  • Tenga sus bases de datos de recopilación pertinentes en Enterprise edición de SQL Server.
  • Tenga sus bases de datos de recopilación pertinentes SQL Server 2012 SP1 (o superior) o SQL Server 2014 CU3 (o superior).

Para obtener más información, vea lo siguiente.

Introducción

Team Foundation Server 2015 incluye cambios de esquema en un gran número de tablas para admitir el cambio de nombre de los proyectos. Como resultado, la actualización a Team Foundation Server 2015 puede tardar una cantidad significativa de tiempo, en función del tamaño de la base de datos. Dado que las actualizaciones de TFS están sin conexión, Microsoft proporciona una herramienta, TfsPreUpgrade.exe, que se puede usar para realizar las partes más costosas del trabajo para actualizar a TFS 2015 mientras la implementación de TFS 2013 sigue en línea. No tiene que ejecutar esta herramienta antes de actualizar. Se recomienda ejecutarlo para bases de datos de recopilación que superen 1 TB de tamaño para reducir el tiempo que TFS tendrá que estar sin conexión.

Por lo generalTfsPreUpgrade.exe crea nuevas copias de las tablas más afectadas por los cambios de esquema presentes en TFS 2015 y, a continuación, migra datos de las tablas originales a las nuevas copias. Para controlar la actividad del usuario en curso, también coloca desencadenadores que mantienen los cambios en las tablas originales que fluyen a las nuevas copias. Microsoft ha optimizado TfsPreUpgrade.exe ampliamente con el fin de minimizar sus impactos en el rendimiento en los servidores y los usuarios, pero puede y tendrá un impacto en el rendimiento. En el caso de operaciones de gran tamaño, como la creación y eliminación de ramas de Control de versiones de Team Foundation (TFVC), esto podría provocar la insatisfaz del usuario e incluso los tiempos de espera de la base de datos. Consulte a continuación una lista completa de las operaciones que se sabe que se ven afectadas considerablemente.

Como resultado, TfsPreUpgrade.exe debe iniciarse lo más cerca posible de la fecha planeada de la actualización sin conexión mientras todavía tiene tiempo para completar su trabajo y debe ejecutarse durante una ventana en la que se puedan evitar estas operaciones de gran tamaño. Muchos factores pasarán a tener en cuenta cuánto tiempo tarda TfsPreUpgrade.exe en completarse, pero generalmente esperamos que tarde dos semanas o menos y, por lo tanto, por lo general se recomienda comenzar TfsPreUpgrade.exe dos semanas antes de la actualización sin conexión planeada. TfsPreUpgrade.exe puede proporcionar una estimación aproximada del tiempo que se va a tardar en ejecutarse mediante la ejecución del comando Estimate.

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

Debido a su funcionamiento, TfsPreUpgrade.exe esquemas de base de datos de origen y de destino estables. Por lo tanto, solo se puede ejecutar en bases de datos de TFS 2013 Update 4 y Update 5. Si la implementación de TFS aún no está en TFS 2013 Update 4 o 5, deberá actualizar a una de esas versiones antes de ejecutar TfsPreUpgrade.exe. TFS 2013 Update 5 se puede descargar aquí: https://www.visualstudio.com/downloads/download-visual-studio-vs .

¿Qué TfsPreUpgrade.exe hacer?

TfsPreUpgrade.exe hará lo siguiente:

  • Habilite la compresión para un pequeño número de tablas que no se comprimió en 2013, pero que estarán en 2015.
  • Busque y corrija un daño de datos muy poco frecuente pero bien comprendido en los datos de control de versiones de TFS.
  • Cree nuevas tablas y migre los datos existentes a ellas.
  • Cree desencadenadores.
  • Actualice los procedimientos almacenados.
  • Crear índices. (Enterprise ediciones de SQL Server son necesarias para permitir que estas operaciones se realicen en línea).

Dado que crea nuevas tablas para migrar datos de forma en línea, TfsPreUpgrade.exe requiere una cantidad potencialmente grande de espacio en disco adicional para los datos y los registros de transacciones. Como parte de la ejecución de TfsPreUpgrade.exe, comprobará si esa cantidad de espacio ya está disponible. Si no es así, intentará asignar previamente ese espacio. Si se produce un error, generará un error. TfsPreUpgrade.exe puede proporcionar una estimación de cuánto espacio intentará asignar previamente mediante la ejecución del comando Estimate.

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

Dado TfsPreUpgrade.exe realiza operaciones potencialmente costosas (copia masiva de datos, creaciones de índices, etc.), puede afectar al rendimiento del servidor. Microsoft no espera que este impacto sea drástico y hemos optimizado las operaciones realizadas por TfsPreUpgrade.exe para minimizar el impacto en los servidores y los usuarios. Si experimenta problemas de rendimiento mientras TfsPreUpgrade.exe se está ejecutando, siempre se puede cancelar escribiendo Ctrl+C. TfsPreUpgrade.exe se escribe para que al cancelarlo se cancelen las operaciones que está realizando. Nunca debe dejar la base de datos en mal estado y siempre se puede volver a ejecutar varias veces si se cierra antes de que se haya ejecutado hasta su finalización.

Como TfsPreUpgrade.exe crea desencadenadores que mantienen sincronizadas las copias originales y nuevas de las tablas después de la migración inicial, incluso después de cancelar TfsPreUpgrade.exe es posible que siga teniendo un impacto en el rendimiento del servidor. De nuevo, Microsoft no espera que este impacto sea drástico y hemos optimizado el rendimiento de estos desencadenadores para minimizar el impacto en los servidores y los usuarios. Si sigue experimentando problemas de rendimiento después de cancelar TfsPreUpgrade.exe, puede usar el comando TfsPreUpgrade.exe Revert para deshacer la mayoría de las acciones realizadas por el comando Ejecutar. Revertir quitará todos los desencadenadores instalados por el comando Ejecutar, eliminará todas las nuevas tablas que creó, etc. Para obtener el conjunto de acciones realizadas por Run que no se revierten mediante Revert, consulte a continuación.

Las operaciones tfvc que se tratan con un número muy grande de elementos son las más probables que se verán afectadas negativamente por los desencadenadores que TfsPreUpgrade.exe crea. Si es posible, evite estas operaciones de TFVC mientras TfsPreUpgrade.exe y antes de que se complete la actualización sin conexión a TFS 2015.

  • Crear, eliminar y cambiar el nombre de las ramas.
  • Destruir operaciones que afectan a un gran número de elementos.
  • Eliminar proyectos que usan TFVC.

Si necesita realizar estas operaciones, puede esperar que se realicen al menos el doble de tiempo con los desencadenadores TfsPreUpgrade en su lugar.

Cómo ejecutar TfsPreUpgrade.exe?

El procedimiento recomendado para ejecutar TfsPreUpgrade.exe es:

  1. Descargue TfsPreUpgrade.exe. Tenga en cuenta que la máquina en la que instala TfsPreUpgrade no es importante siempre y cuando pueda acceder SQL las instancias de SQL pertinentes: se comprima con todas sus dependencias.

  2. Descomprímalo en un directorio local.

  3. Determine las bases de datos de recopilación en las que TfsPreUpgrade.exe ejecutar. Se puede ejecutar en cualquier base de datos de recopilación sin afectar negativamente a su capacidad de actualización, pero generalmente solo se necesita en bases de datos lo suficientemente grandes como para requerir un tiempo de inactividad significativo durante una actualización sin conexión. Microsoft recomienda usar TfsPreUpgrade.exe bases de datos por encima de 1 TB de tamaño.

  4. Como usuario que es administrador del sistema en la instancia de SQL (TfsPreUpgrade establece varias marcas de seguimiento durante su ejecución), ejecute el comando Ejecutar:

    TfsPreUpgrade.exe ejecutar /TargetDatabaseNames:"{SQL Instance}; {Nombre de base de datos de colección}"

  5. Si desea ejecutar TfsPreUpgrade.exe en más de una base de datos de recopilación, puede usar varias invocaciones de TfsPreUpgrade.exe (en cuyo caso se ejecutarán en paralelo SQL) o puede especificar varias cadenas de instancia o base de datos de colección separadas por comas en una sola invocación (en cuyo caso se ejecutarán secuencialmente).

TfsPreUpgrade.exe se ejecutará durante bastante tiempo, en función del tamaño de las bases de datos de recopilación con las que se ejecuta. Se mostrará el progreso a lo largo del proceso para que pueda tener una idea de lo lejos que está y cuánto tiempo podría quedar. Una TfsPreUpgrade.exe se ha completado, los desencadenadores que instala mantendrán los cambios adicionales realizados debido a que el servidor está en línea fluyendo a las tablas migradas. Por lo tanto, no es necesario volver a ejecutarla antes de realizar la actualización sin conexión a TFS 2015.

Estadísticas de renovación de código

Una opción avanzada que puede tener en cuenta al ejecutar TfsPreUpgrade.exe es omitir la migración de estadísticas de renovación de código anteriores a algún umbral. Las estadísticas de renovación de código se calculan mediante un proceso en segundo plano cuando se comprueban los cambios en TFVC y se almacenan en una de las tablas migradas por TfsPreUpgrade.exe. A continuación, estos datos fluyen al almacén y al cubo y, a continuación, se pueden usar en informes. Vea aquí para obtener más información.

Si las estadísticas de renovación de código antiguas no son de su interés (o si alguna estadística de renovación de código no le interesa), puede ahorrar algún tiempo durante la ejecución de TfsPreUpgrade.exe y la posterior ejecución de la actualización sin conexión omitiendo la migración de estadísticas anteriores a una fecha determinada. Esto se puede lograr mediante el parámetro /SkipCodeChurnBefore opcional para el comando Run. Por ejemplo, si quisiera omitir la migración de estadísticas de renovación de código anteriores al 1 de enero de 2015, podría usar la siguiente línea de comandos:

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

Si usa esta opción, las estadísticas de renovación de código pertinentes no se migrarán y no estarán presentes en el almacén y el cubo después de la actualización sin conexión.

Actualización sin conexión a TFS 2015

Ya está listo para realizar la actualización sin conexión a TFS 2015, para la que puede seguir los procedimientos normales para actualizar TFS.

Consulte a continuación datos adicionales sobre algunas operaciones realizadas con poca frecuencia que están bloqueadas por TfsPreUpgrade.exe y para obtener más información sobre los cambios de base de datos realizados por TfsPreUpgrade.exe que no se revierten mediante la ejecución de TfsPreUpgrade.exe Revert.

Operaciones bloqueadas

Al principio de la ejecución de TfsPreUpgrade.exe se han puesto en marcha una serie de desencadenadores de "seguridad" para bloquear las operaciones permitidas por TFS 2013, pero que ya no están permitidas por TFS 2015 o que podrían causar problemas en la presencia de los desencadenadores puestos en marcha por TfsPreUpgrade.exe. Entre ellas se incluyen las siguientes:

  1. Eliminación de proyectos. No se recomienda eliminar proyectos una vez que haya ejecutado TfsPreUpgrade.exe una base de datos de recopilación. Si elimina un proyecto, se producirá un error justo antes de finalizar la eliminación, dejando el proyecto en un estado de eliminación. Project se volverá a poder eliminar una vez que actualice a TFS 2015.
  2. Creación de áreas de trabajo con referencias a carpetas raíz que no existen. Se producirá un error TF10169. Tenga en cuenta que un escenario en el que esto podría mostrarse es en definiciones de compilación cuyas plantillas de área de trabajo hacen referencia a carpetas raíz que no existen; en estos escenarios, las compilaciones pueden producir un error durante la creación del área de trabajo con el error dado. Este escenario seguirá sin ser compatible en TFS 2015 debido a cambios relacionados con el cambio de nombre de Project, pero se producirá un error con un mensaje de error más relevante.
  3. Llamar a VersionControlServer.CreateTeamProjectFolder() a través del código escrito en el OM del cliente de TFS. Se producirá un error TF10169. Este escenario seguirá sin ser compatible en TFS 2015 debido a cambios relacionados con el cambio de nombre de Team Project, pero se producirá un error con un mensaje de error más relevante.

Excepciones a la TfsPreUpgrade.exe revertir

Ejecutar TfsPreUpgrade.exe ejecutar tiene una serie de efectos secundarios que no se revierten al ejecutar TfsPreUpgrade.exe Revertir. De más interés, no se revertirán las asignaciones previas de espacio de registro de transacciones o base de datos realizadas por TfsPreUpgrade.exe, lo que significa que los archivos de base de datos pueden ser significativamente mayores que antes de ejecutar TfsPreUpgrade.exe. Sin embargo, el espacio adicional no se usará, ya que las tablas adicionales creadas por TfsPreUpgrade.exe se eliminarán. Se recomienda dejar este espacio en su lugar, ya que se rellenará de forma natural a medida que suba el tamaño de los datos de los archivos de base de datos y porque la actualización a TFS 2015 los necesite.

Los demás efectos secundarios que no se revierten no tienen ningún impacto y se enumeran aquí solo para su información. Estos cambios se habrían realizado mediante una actualización a TFS 2015 en cualquier caso y no deberían tener ningún impacto en el funcionamiento del servidor ni en su actualización final.

  1. Los daños encontrados y corregidos en los datos de control de versiones de TFS no se revertirán.
  2. No se quitará una columna tbl_Version por el script de detección y corrección de daños.
  3. Las tablas para las que está habilitada la compresión no volverán a deshabilitarla.