none
Errore durante l'aggiornamento da TFS 2012 a TFS 2013 RRS feed

  • Domanda

  • Buongiorno,

    durante l'aggiornamento da TFS2012 a TFS2013, dopo aver lanciato l'upgrade wizard, mi ritrovo il seguente errore:

    TFS2012 Upgrade Wizard Readiness Checks fail for Data Tier

    e nel file di log:

    [Info   @13:55:04.869] +-+-+-+-+-| Verifying that the Model Link does not exist |+-+-+-+-+-
    [Info   @13:55:04.869] Starting Node: VUPGMDLLNK
    [Info   @13:55:04.869] NodePath : VINPUTS/Progress/Conditional/VPCUPGRADE/VCOLLECTIONSREACHABLE/VUPGMDLLNK
    [Info   @13:55:04.870] Getting Reachable Collections
    [Info   @13:55:04.870] Reachable collections found: 9
    [Error  @13:55:05.606] System.Data.SqlClient.SqlException (0x80131904): Invalid column name 'PartitionId'.
    Invalid column name 'PartitionId'.
       at Microsoft.TeamFoundation.Framework.Server.TeamFoundationSqlResourceComponent.MapException(SqlException ex, QueryExecutionState queryState)
       at Microsoft.TeamFoundation.Framework.Server.TeamFoundationSqlResourceComponent.MapException(SqlException ex)
       at Microsoft.TeamFoundation.Framework.Server.TeamFoundationSqlResourceComponent.HandleException(Exception exception)
       at Microsoft.TeamFoundation.Framework.Server.TeamFoundationSqlResourceComponent.Execute(ExecuteType executeType, CommandBehavior behavior)
       at Microsoft.TeamFoundation.Admin.AdminSqlResourceComponent.ExecuteScalar(SqlQuery sqlQuery, SqlInfoMessageEventHandler infoMessageHandler)
       at Microsoft.TeamFoundation.Admin.SqlHandler.ExecuteScalar[T](String connectionString, SqlQuery sqlQuery, SqlInfoMessageEventHandler infoMessageHandler)
       at Microsoft.TeamFoundation.Admin.SqlHandler.ExecuteScalar[T](String connectionString, String sqlStatement)
       at Microsoft.TeamFoundation.Admin.VerifyModelLinkNotExistsInAllTpcs.Run(ActivityContext context)
       at Microsoft.TeamFoundation.Admin.Engine.AdminNode.RunNode()
       at Microsoft.TeamFoundation.Admin.Engine.AdminNode.Run(String& message, Boolean& continueOnError)
    ClientConnectionId:06d7bc45-831b-482c-a5ed-473a513d0c67
    [Error  @13:55:05.606] Unhandled message not defined for task VUPGMDLLNK:Verifying that the Model Link does not exist
    [Error  @13:55:05.611] TF400129: Error from readiness check: Verifying that the Model Link does not exist
    [Info   @13:55:05.611] Completed VerifyModelLinkNotExistsInAllTpcs: Error

    come posso risolvere il problema?

    Grazie

    mercoledì 23 ottobre 2013 15:26

Risposte

  • E se invece di cancellare la Project Collection tu provassi semplicemente a fare un detatch prima dell'upgrade della collection incriminata?

    Un'alternativa "BRUTALE" sarebbe quella di stoppare il TFS, poi da sql server fare un detatch del db della collection problematica e riavviare TFS. Nella console vedrai l'errore per quella collection, ignora e prova ad aggiornare. 

    Se hai tutto installato su una macchina virtuale fai uno snapshot a macchina spenta che ti può tornare utile per tornare indietro se qualcosa va storto.

    Gian Maria.


    Ricci Gian Maria. (http://www.codewrecks.com)

    • Contrassegnato come risposta Ivan Bim giovedì 24 ottobre 2013 13:55
    giovedì 24 ottobre 2013 13:12
    Moderatore

Tutte le risposte

  • Che versione di TFS 2012 stai upgradando ? Update 1, 2, 3 oppure la RTM?

    L'errore è strano, sembra che lui si aspetti di trovare una colonna che non trova, per cui è un problema di schema di db. Puoi dirci la storia di questo TFS? è stato installato direttamente come 2012? arriva dal 2010 oppure da prima?

    Gian MAria.


    Ricci Gian Maria. (http://www.codewrecks.com)

    giovedì 24 ottobre 2013 08:19
    Moderatore
  • Buongiorno,

    il TFS che stò cercando di aggiornare arriva dal 2010.

    Postando il problema sul forum inglese mi è stato risposto:

    Hi,

    according to the log, you have 9 Team Project Collections. Do you know if all them were operational in TFS 2012?

    I suspect, you have a collection that failed to upgrade to TFS 2012 and collection database is in wacky state.

    You can execute the following SQL statement in each collection to identify problematic ones:

        SELECT  COUNT(*)
        FROM    tbl_ToolType tools
        JOIN    tbl_ArtifactLink links
        ON      tools.Id = links.SourceTypeId
        JOIN    tbl_DatabasePartitionMap map
        ON      tools.PartitionId = map.PartitionId
                AND links.PartitionId = map.PartitionId
        WHERE   tools.Type = N'WorkItemTracking'
                AND links.SourceArtifactTypeName = N'WorkItem'
                AND links.LinkName = N'Model Link'
                AND (links.SinkType <> N'ArchitectureTools'
                    OR links.SinkArtifactTypeName <> N'ModelLink')
                AND map.PartitionId > 0

    Once you identified problematic collection, you can re-install TFS 2012 and execute TfsConfig collection /delete /collectionName:<collectionName> command to delete it.

    Thanks,

    --Vladimir

    Infatti il problema è dovuto ad una collection che non utilizzo (DefaultCollection che proviene dalla prima installazione di TFS2010).

    Ho eseguito il ripristino del sistema a prima dell'installazione di TFS2013 ed ho provato a cancellare la collection.

    Il risultato è questo:

    [2013-10-24 08:43:20Z][Informational] Creating dictionary with 4 initial items:
    [2013-10-24 08:43:20Z][Informational]  CollectionProperties => 412408f8-304c-464c-86db-4805044f0dcb (DefaultCollection)
    [2013-10-24 08:43:20Z][Informational]  RequestingIdentity => IdentityDescriptor (IdentityType: System.Security.Principal.WindowsIdentity; Identifier: S-1-5-21-2537743330-1004942796-3670905772-1000)
    [2013-10-24 08:43:20Z][Informational]  DatabaseMap => System.Collections.Generic.Dictionary`2[System.String,System.String]
    [2013-10-24 08:43:20Z][Informational]  CollectionDatabaseReachable => True
    [2013-10-24 08:43:20Z][Informational] Acquiring servicing job lock 'Servicing-412408f8-304c-464c-86db-4805044f0dcb'
    [2013-10-24 08:43:20Z][Informational] Setting token. Key: JobId. Value: eed79664-71f2-4a5b-9c37-d97defca82ec.
    [2013-10-24 08:43:27Z][Informational] Setting item. Key: TargetRequestContext. Value: Microsoft.TeamFoundation.Framework.Server.TeamFoundationRequestContext.
    [2013-10-24 08:43:27Z][Error] The type initializer for 'Microsoft.TeamFoundation.Admin.ServiceLevel' threw an exception.
    [2013-10-24 08:43:27Z][Informational] System.TypeInitializationException: The type initializer for 'Microsoft.TeamFoundation.Admin.ServiceLevel' threw an exception. ---> System.IO.FileNotFoundException: Could not find file 'C:\Program Files\Microsoft Team Foundation Server 11.0\Tools\Deploy\TfsServicingFiles\ReleaseManifest.xml'.
       at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
       at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
       at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share)
       at System.IO.File.OpenRead(String path)
       at Microsoft.TeamFoundation.Admin.ServiceLevel.Initialize()
       at Microsoft.TeamFoundation.Admin.ServiceLevel..cctor()
       --- End of inner exception stack trace ---
       at Microsoft.TeamFoundation.Framework.Server.TeamFoundationServicingService.PerformPreJobWork(TeamFoundationRequestContext requestContext, ServicingContext servicingContext, ServicingJobData servicingJobData)
       at Microsoft.TeamFoundation.Framework.Server.TeamFoundationServicingService.PerformServicingJob(TeamFoundationRequestContext requestContext, ServicingJobData servicingJobData, Guid jobId, DateTime jobQueueTime, Int32 numberOfStepsToPerform)
    [2013-10-24 08:43:27Z][Informational] Removing item. Key: TargetRequestContext.
    [2013-10-24 08:43:27Z][Informational] Clearing dictionary, removing all items.

    In ogni caso la collection incriminata risulta offline, le altre sono online ma se provo ad accedere ottengo il seguente errore:

    HTTP code 500: Internal Server Error

    Cosa posso fare?

    Grazie

    giovedì 24 ottobre 2013 12:25
  • In ogni caso l'attuale versione di TFS 21012 è: 11.0.50727

    Grazie ancora per il supporto

    giovedì 24 ottobre 2013 12:44
  • E se invece di cancellare la Project Collection tu provassi semplicemente a fare un detatch prima dell'upgrade della collection incriminata?

    Un'alternativa "BRUTALE" sarebbe quella di stoppare il TFS, poi da sql server fare un detatch del db della collection problematica e riavviare TFS. Nella console vedrai l'errore per quella collection, ignora e prova ad aggiornare. 

    Se hai tutto installato su una macchina virtuale fai uno snapshot a macchina spenta che ti può tornare utile per tornare indietro se qualcosa va storto.

    Gian Maria.


    Ricci Gian Maria. (http://www.codewrecks.com)

    • Contrassegnato come risposta Ivan Bim giovedì 24 ottobre 2013 13:55
    giovedì 24 ottobre 2013 13:12
    Moderatore
  • Ciao,

    sono riuscito a fare la detach da sql server.

    Ho provato, senza successo, a cancellare la collection con tfsconfig.

    Ho fatto un ripristino di TFS2012

    Ho cancellato, con successo, la collection con tfsconfig

    Ora stò installando TFS2013

    Speriamo bene...

    Ti faccio sapere appena ha finito

    Grazie

    Ciao

    giovedì 24 ottobre 2013 13:26
  • Aggiornamento riuscito!

    Il problema era nella collezione di default che, tra l'altro, non abbiamo mai utilizzato.

    In ogni caso per disinstallare TFS 2013 e reinstallare TFS2012 non è sufficiente utilizzare solo un punto di ripristino, ma bisogna anche fare un rispristino specifico di TFS2012.

    Grazie mille per la collaborazione

    Ciao

    giovedì 24 ottobre 2013 14:25
  • Benissimo sono contento che tu sia riuscito. Da quello che dici deduco che non sia una macchina virtuale ma una macchina fisica, in questo caso un punto di ripristino non basta sicuramente.

    Con una macchina virtuale invece puoi fare uno snapshot a macchina spenta.

    Per futuri upgrade ti suggerisco di testare prima il tutto su un'altra macchina, usi il tfsbackup.exe per backuppare tutti i database, poi li sposti in una macchina di test, installi il TFS nuova versione, restori tutto con tfsrestore.exe e poi fai l'upgrade e vedi se va tutto bene ;).

    Poi se hai bisogno siamo qui. Buon lavoro.

    Gian Maria.


    Ricci Gian Maria. (http://www.codewrecks.com)

    giovedì 24 ottobre 2013 14:57
    Moderatore
  • Infatti non si tratta di una macchina virtuale.

    La prossima volta seguirò il tuo consiglio. Siamo un piccolo team di sviluppo che si occupa anche di TFS, ma nessuno di noi è un esperto in tale ambito quindi, quando qualche cosa va storto, ci troviamo in difficoltà.

    Grazie ancora

    Ciao

    Ivan

    giovedì 24 ottobre 2013 16:57