Use TfsPreUpgrade to reduce downtime (Używanie programu TfsPreUpgrade do zmniejszenia przestoju)

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

Uwaga

Azure DevOps Server wcześniej nosiła nazwę Visual Studio Team Foundation Server.

Wymagania

Program TfsPreUpgrade jest obsługiwany Team Foundation Server wdrożeniach, które:

  • Są obecnie dostępne na serwerach TFS 2013 Update 4 lub Update 5.
  • Odpowiednie bazy danych kolekcji mogą być Enterprise wersji SQL Server.
  • Odpowiednie bazy danych kolekcji mogą być SQL Server 2012 SP1 (lub większym) lub SQL Server 2014 CU3 (lub większym).

Więcej informacji można znaleźć poniżej.

Wprowadzenie

Team Foundation Server 2015 obejmuje zmiany schematu w dużej liczbie tabel w celu obsługi zmiany nazw projektów. W związku z tym uaktualnienie do wersji Team Foundation Server 2015 może zająć znaczną ilość czasu, w zależności od rozmiaru bazy danych. Ponieważ uaktualnienia serwera TFS są w trybie offline, firma Microsoft udostępnia narzędzie TfsPreUpgrade.exe, które może służyć do najdroższych części pracy w celu uaktualnienia do serwera TFS 2015, podczas gdy wdrożenie serwera TFS 2013 jest nadal w trybie online. Nie trzeba uruchamiać tego narzędzia przed uaktualnieniem. Zalecamy uruchomienie go dla baz danych kolekcji, których rozmiar przekracza 1 TB, aby skrócić czas, przez który program TFS musi być w trybie offline.

Ogólnie TfsPreUpgrade.exe działa przez tworzenie nowych kopii tabel, na które mają największe wpływ zmiany schematu obecne w programie TFS 2015, a następnie migrowanie danych z oryginalnych tabel do nowych kopii. W celu obsługi bieżącej aktywności użytkowników są również obsługiwane wyzwalacze, które przechowują zmiany oryginalnych tabel przepływających do nowych kopii. Firma Microsoft zoptymalizowała TfsPreUpgrade.exe w szerokim celu zminimalizowania jej wpływu na wydajność serwerów i użytkowników, ale może i będzie mieć wpływ na wydajność. W przypadku dużych operacji, takich jak Kontrola wersji serwera Team Foundation (TFVC) tworzących i usuwających gałęzie, może to prowadzić do niezadowolenia użytkowników, a nawet przeoczania limitu czasu bazy danych. Poniżej znajduje się pełna lista operacji, na które wiadomo, że ma to znaczący wpływ.

W związku z tym TfsPreUpgrade.exe powinny zostać uruchomione możliwie jak najbardziej zbliżone do planowanej daty uaktualnienia w trybie offline, przy jednoczesnym zachowaniu czasu na ukończenie pracy i powinny być uruchamiane w oknie, w którym można uniknąć tych dużych operacji. Wiele czynników będzie się kładło na to, jak długo trwa TfsPreUpgrade.exe, ale ogólnie oczekujemy, że zajmie to dwa tygodnie lub mniej, dlatego zazwyczaj zaleca się rozpoczęcie od TfsPreUpgrade.exe dwóch tygodni przed zaplanowanym uaktualnieniem w trybie offline. TfsPreUpgrade.exe oszacować przybliżony czas wykonywania, uruchamiając polecenie Estimate (Oszacowanie).

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

Ze względu na sposób jego działania TfsPreUpgrade.exe stabilne schematy źródłowej i docelowej bazy danych. W związku z tym można go uruchamiać tylko dla baz danych programu TFS 2013 Update 4 i Update 5. Jeśli wdrożenie serwera TFS nie jest jeszcze w wersji TFS 2013 Update 4 lub 5, przed uruchomieniem programu TfsPreUpgrade.exe należy uaktualnić do jednej z tych TfsPreUpgrade.exe. Program TFS 2013 Update 5 można pobrać tutaj: https://www.visualstudio.com/downloads/download-visual-studio-vs .

Co TfsPreUpgrade.exe zrobić?

TfsPreUpgrade.exe to:

  • Włącz kompresję dla niewielkiej liczby tabel, które nie zostały skompresowane w 2013 r., ale będą w 2015 r.
  • Skanuj i naprawiaj bardzo rzadkie, ale zrozumiałe uszkodzenie danych w danych kontroli wersji serwera TFS.
  • Tworzenie nowych tabel i migrowanie do nich istniejących danych.
  • Tworzenie wyzwalaczy.
  • Aktualizowanie procedur składowanych.
  • Tworzenie indeksów. (Enterprise wersje SQL Server są wymagane do umożliwienia wykonania tych operacji w trybie online).

Ponieważ program tworzy nowe tabele w celu przeprowadzenia migracji danych w trybie online, TfsPreUpgrade.exe wymaga potencjalnie dużej ilości dodatkowego miejsca na dysku zarówno dla dzienników danych, jak i dzienników transakcji. W ramach wykonywania TfsPreUpgrade.exe sprawdzi, czy ta ilość miejsca jest już dostępna. Jeśli nie, spróbuje wstępnie przydzielić tyle miejsca. Jeśli to się nie powiedzie, spowoduje to wygenerowanie błędu. TfsPreUpgrade.exe oszacować ilość miejsca, które spróbuje wstępnie przydzielić, uruchamiając polecenie Estimate (Oszacowanie).

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

Ponieważ TfsPreUpgrade.exe wykonuje potencjalnie kosztowne operacje (zbiorcze kopiowanie danych, tworzenie indeksów itp.), może to mieć wpływ na wydajność serwera. Firma Microsoft nie oczekuje, że ten wpływ będzie znaczący, a firma Microsoft zoptymalizowała operacje wykonywane przez usługę TfsPreUpgrade.exe, aby zminimalizować wpływ na serwery i użytkowników. Jeśli występują problemy z wydajnością podczas TfsPreUpgrade.exe, zawsze można je anulować, naciskając klawisze Ctrl+C. TfsPreUpgrade.exe tak, aby anulowanie anulowało operacje, które wykonuje. Nigdy nie należy pozostawiać bazy danych w złym stanie i zawsze można ją ponownie uruchomić wiele razy, jeśli zakończy działanie, zanim zostanie ona ukończona.

Ponieważ program TfsPreUpgrade.exe tworzy wyzwalacze, które przechowują oryginalne i nowe kopie tabel w synchronizacji po początkowej migracji, nawet po anulowaniu programu TfsPreUpgrade.exe może to nadal mieć wpływ na wydajność serwera. Również firma Microsoft nie oczekuje, że ten wpływ będzie znaczący, a zoptymalizowaliśmy wydajność tych wyzwalaczy w celu zminimalizowania wpływu na serwery i użytkowników. Jeśli problemy z wydajnością będą nadal występowały po anulowaniu TfsPreUpgrade.exe, możesz użyć polecenia TfsPreUpgrade.exe Revert, aby cofnąć większość akcji wykonywanych przez polecenie Uruchom. Polecenie Revert spowoduje usunięcie wszystkich wyzwalaczy zainstalowanych za pomocą polecenia Uruchom, usunięcie wszystkich nowo utworzonych tabel itp. Aby uzyskać zestaw akcji podjętych przez przebieg, które nie są przywracane przez przywracanie, zobacz poniżej.

Na operacje TFVC, które dotyczą bardzo dużej liczby elementów, najprawdopodobniej będą mieć negatywny wpływ wyzwalacze, które TfsPreUpgrade.exe elementy. Jeśli możesz, unikaj tych operacji tfvc podczas TfsPreUpgrade.exe i przed zakończeniem uaktualniania do serwera TFS 2015 w trybie offline.

  • Tworzenie, usuwanie i zmienianie nazw gałęzi.
  • Niszczenie operacji, które mają wpływ na dużą liczbę elementów.
  • Usuwanie projektów, które używają serwera TFVC.

Jeśli musisz wykonać te operacje, możesz oczekiwać, że ich ukończenie z wyzwalaczami TfsPreUpgrade będzie trwać co najmniej dwa razy więcej.

Jak mogę uruchomić TfsPreUpgrade.exe?

Zalecana procedura uruchamiania TfsPreUpgrade.exe jest:

  1. Pobierz TfsPreUpgrade.exe. Pamiętaj, że komputer, na którym jest instalowany program TfsPreUpgrade, nie jest ważny, o ile ma dostęp do odpowiednich wystąpień programu SQL — jest on sypkowany ze wszystkimi jego zależnościami.

  2. Rozpakować go do katalogu lokalnego.

  3. Ustal, w których bazach danych kolekcji chcesz TfsPreUpgrade.exe dane. Można ją uruchamiać w dowolnych bazach danych kolekcji bez negatywnego wpływu na możliwość uaktualniania, ale zazwyczaj jest ona potrzebna tylko w przypadku baz danych, które są wystarczająco duże, aby wymagać znacznego przestoju podczas uaktualniania w trybie offline. Firma Microsoft zaleca używanie TfsPreUpgrade.exe baz danych o rozmiarze powyżej 1 TB.

  4. Jako użytkownik, który jest administratorem systemu w wystąpieniu SQL (TfsPreUpgrade ustawia kilka flag traceflags podczas jego wykonywania), wykonaj polecenie Uruchom:

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

  5. Jeśli chcesz uruchomić program TfsPreUpgrade.exe na więcej niż jednej bazie danych kolekcji, możesz użyć wielu wywołania funkcji TfsPreUpgrade.exe (w takim przypadku będą one uruchamiane równolegle SQL) lub określić wiele ciągów wystąpienia kolekcji/bazy danych kolekcji rozdzielonych przecinkami w jednym wywołaniach (w takim przypadku będą one uruchamiane sekwencyjnie).

TfsPreUpgrade.exe będzie działać przez pewien czas, w zależności od rozmiaru baz danych kolekcji, względem których jest uruchomiona. Będzie raportuje postęp po drodze, dzięki czemu możesz mieć pewne pojęcie o tym, jak daleko się znajduje i ile czasu może zostać pozostało. Po TfsPreUpgrade.exe wyzwalacze, które instaluje, zachowają wszelkie dodatkowe zmiany wprowadzone, ponieważ serwer będzie w trybie online przepływać do migrowanych tabel. W związku z tym nie trzeba uruchamiać go ponownie przed przeprowadzeniem uaktualnienia w trybie offline do serwera TFS 2015.

Statystyki zmian kodu

Jedną z zaawansowanych opcji, które można wziąć pod TfsPreUpgrade.exe, jest pominięcie migracji statystyk zmian kodu starszych niż pewien próg. Statystyki zmian kodu są obliczane przez proces w tle, gdy zmiany są zaewidencjonowane w kontroli wersji serwera Team i są przechowywane w jednej z tabel migrowanych przez program TfsPreUpgrade.exe. Te dane są następnie przepływać do magazynu i modułu, a następnie mogą być używane w raportach. Więcej informacji można znaleźć tutaj.

Jeśli stare statystyki zmian kodu nie są dla Ciebie interesujące (lub jeśli nie interesują Cię żadne statystyki zmian kodu), możesz zaoszczędzić trochę czasu podczas wykonywania programu TfsPreUpgrade.exe i późniejszego wykonywania uaktualnienia w trybie offline, pomijając migrację statystyk starszych niż data. Można to zrobić przy użyciu opcjonalnego parametru /SkipCodeChurnBefore w poleceniu Run. Jeśli na przykład chcesz pominąć migrację statystyk zmian kodu starszych niż 1 stycznia 2015 r., możesz użyć następującego wiersza polecenia:

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

Jeśli użyjemy tej opcji, odpowiednie statystyki zmian kodu nie zostaną zmigrowane i nie będą obecne w magazynie i module po uaktualnieniu w trybie offline.

Uaktualnienie w trybie offline do serwera TFS 2015

Teraz możesz wykonać uaktualnienie w trybie offline do serwera TFS 2015, dla którego możesz wykonać normalne procedury uaktualniania serwera TFS.

Poniżej przedstawiono dodatkowe dane dotyczące niektórych rzadko wykonywanych operacji, które są blokowane przez program TfsPreUpgrade.exe, oraz więcej informacji na temat zmian w bazie danych wprowadzonych przez program TfsPreUpgrade.exe, które nie są przywracane przez uruchomienie programu TfsPreUpgrade.exe Revert.

Zablokowane operacje

Na wczesnym etapie wykonywania programu TfsPreUpgrade.exe w celu blokowania operacji, które były dozwolone przez program TFS 2013, ale które nie są już dozwolone przez program TFS 2015 lub które spowodowałyby problemy w obecności wyzwalaczy, które zostałyby wprowadzone przez program TfsPreUpgrade.exe. Są one następujące:

  1. Usuwanie projektów. Nie zaleca się usuwania projektów po uruchomieniu TfsPreUpgrade.exe względem bazy danych kolekcji. Usunięcie projektu zakończy się niepowodzeniem tuż przed zakończeniem usuwania, pozostawiając projekt w stanie Usuwanie. Project będzie ponownie obsługiwane po uaktualnieniu do serwera TFS 2015.
  2. Tworzenie obszarów roboczych z odwołaniami do folderów głównych, które nie istnieją. Te działania nie powiodą się z błędem TF10169. Należy pamiętać, że jeden ze scenariuszy, w którym może się to pojawić, znajduje się w definicjach kompilacji, których szablony obszarów roboczych odwołują się do folderów głównych, które nie istnieją — w tych scenariuszach kompilacje mogą się nie powieść podczas tworzenia obszaru roboczego z danym błędem. Ten scenariusz będzie nadal nieobsługiwany w programie TFS 2015 z powodu zmian związanych ze zmianą nazwy serwera Project, ale zakończy się niepowodzeniem z bardziej odpowiednim komunikatem o błędzie.
  3. Wywoływanie funkcji VersionControlServer.CreateTeamProjectFolder() za pomocą kodu napisanego względem pakietu OM klienta TFS. Ten błąd nie powiedzie się z błędem TF10169. Ten scenariusz będzie nadal nieobsługiwany w programie TFS 2015 z powodu zmian związanych ze zmianą nazwy usługi Team Project, ale zakończy się niepowodzeniem z bardziej odpowiednim komunikatem o błędzie.

Wyjątki dotyczące przywracania TfsPreUpgrade.exe przywracania

Uruchomienie TfsPreUpgrade.exe Run ma wiele efektów ubocznych, które nie są przywracane przez uruchomienie TfsPreUpgrade.exe Revert. Najbardziej interesujące jest to, że wszelkie wstępne alokacje obszaru dziennika bazy danych i/lub transakcji wykonywane przez usługę TfsPreUpgrade.exe nie zostaną przywrócone, co oznacza, że pliki bazy danych mogą być znacznie większe niż przed uruchomieniem TfsPreUpgrade.exe. Dodatkowe miejsce zostanie jednak nieużywane, ponieważ dodatkowe tabele utworzone przez TfsPreUpgrade.exe zostaną usunięte. Zalecamy pozostawienie tego miejsca na miejscu, ponieważ rozmiar danych w plikach bazy danych będzie wypełniany w naturalny sposób, a także dlatego, że będzie on potrzebny po uaktualnieniu do serwera TFS 2015.

Inne efekty uboczne, które nie zostały przywrócone, nie mają wpływu i są wymienione tutaj tylko dla Twoich informacji. Te zmiany zostałyby wprowadzone przez uaktualnienie do serwera TFS 2015 w żadnym przypadku i nie powinny mieć żadnego wpływu na działanie serwera ani na jego ewentualne uaktualnienie.

  1. Wszelkie uszkodzenia znalezione i naprawione w danych kontroli wersji serwera TFS nie zostaną przywrócone.
  2. Kolumna dodana do tbl_Version przez skrypt wykrywania i naprawiania uszkodzenia nie zostanie usunięta.
  3. Tabele, dla których włączono kompresję, nie będą ponownie wyłączane.