TFS 2013 Update 4 到 TFS 2015 Update 3 收集错误

TFS 2013 Update 4 to TFS 2015 Update 3 Collection Error

正在将我的 TFS 2013 Update 4 集合更新到 TFS 2015 Update 3。在 DEV 位置使用生产集合数据的备份。是否已分离生产集合的备份。没有任何错误。备份为254GB。

这是当前阻止我附加集合的错误:

消息 3732,级别 16,状态 1,第 93 行 无法删除类型 'typ_ItemSpec2',因为它正被对象 'prc_QueryPendingChanges_MS' 引用。可能有其他对象引用此类型。

SET XACT_ABORT  ON
SET NOCOUNT     ON

DECLARE @status             INT
DECLARE @procedureName      SYSNAME = N'upd_VersionControlToDev14M80_PostSchema'
DECLARE @tfError            NVARCHAR(255)

IF EXISTS (
    SELECT  *
    FROM    sys.triggers
    WHERE   name = 'trg_tbl_VCFirstRunProject'
)
BEGIN
    DROP TRIGGER trg_tbl_VCFirstRunProject
END

IF EXISTS (
    SELECT  *
    FROM    sys.indexes
    WHERE   name = 'IX_tbl_VCFirstRunProject_OldServerItemPrefix'
            AND object_id = OBJECT_ID('dbo.tbl_VCFirstRunProject')
)
BEGIN
    -- Delete upgrade-only rows for $\, a few partitions at a time
    -- We need dynamic SQL for this to be rerunnable.
    EXEC @status = sp_executesql N'
        DECLARE @batchStart         INT = 1
        DECLARE @batchEnd           INT
        DECLARE @end                INT
        DECLARE @batchSize          INT = 50

        -- Get the partition range
        SELECT  TOP (1)
                @end = PartitionId
        FROM    tbl_VCFirstRunProject
        ORDER BY PartitionId DESC

        WHILE (@batchStart <= @end)
        BEGIN
            SET @batchEnd = @batchStart + @batchSize

            DELETE  tbl_VCFirstRunProject
            WHERE   PartitionId BETWEEN @batchStart AND @batchEnd
                    AND OldServerItemPrefix = N''''
            OPTION (OPTIMIZE FOR (@batchStart=1, @batchEnd=50))

            SET @batchStart = @batchEnd + 1
        END
    '

    IF (@status <> 0)
    BEGIN
        SET @tfError = dbo.func_GetMessage(500004); RAISERROR(@tfError, 16, -1, @procedureName, @status, N'sp_executesql', N'DELETE tbl_VCFirstRunProject')
        RETURN
    END

    DROP INDEX IX_tbl_VCFirstRunProject_OldServerItemPrefix ON tbl_VCFirstRunProject
END

IF EXISTS (
    SELECT  *
    FROM    sys.columns
    WHERE   object_id = Object_ID(N'dbo.tbl_VCFirstRunProject', N'U')
            AND name = N'OldServerItemPrefix'
)
BEGIN
    ALTER TABLE tbl_VCFirstRunProject
    DROP COLUMN OldServerItemPrefix, NewServerItemPrefix
END

IF TYPE_ID('dbo.typ_BranchObject2') IS NOT NULL
BEGIN
    DROP TYPE typ_BranchObject2
END

IF TYPE_ID('dbo.typ_BuildMappingInput2') IS NOT NULL
BEGIN
    DROP TYPE typ_BuildMappingInput2
END

IF TYPE_ID('dbo.typ_CreateLabelInput') IS NOT NULL
BEGIN
    DROP TYPE typ_CreateLabelInput
END

IF TYPE_ID('dbo.typ_ExpandedChange2') IS NOT NULL
BEGIN
    DROP TYPE typ_ExpandedChange2
END

IF TYPE_ID('dbo.typ_ItemSpec2') IS NOT NULL
BEGIN
    DROP TYPE typ_ItemSpec2
END

IF TYPE_ID('dbo.typ_LocalPendingChange3') IS NOT NULL
BEGIN
    DROP TYPE typ_LocalPendingChange3
END

IF TYPE_ID('dbo.typ_LocalVersion3') IS NOT NULL
BEGIN
    DROP TYPE typ_LocalVersion3
END

IF TYPE_ID('dbo.typ_LockConflictCandidate2') IS NOT NULL
BEGIN
    DROP TYPE typ_LockConflictCandidate2
END

IF TYPE_ID('dbo.typ_LockObject') IS NOT NULL
BEGIN
    DROP TYPE typ_LockObject
END

IF TYPE_ID('dbo.typ_Mapping2') IS NOT NULL
BEGIN
    DROP TYPE typ_Mapping2
END

IF TYPE_ID('dbo.typ_PendingAdd2') IS NOT NULL
BEGIN
    DROP TYPE typ_PendingAdd2
END

IF TYPE_ID('dbo.typ_PendingChangeObject') IS NOT NULL
BEGIN
    DROP TYPE typ_PendingChangeObject
END

IF TYPE_ID('dbo.typ_PendingChangeSecurity') IS NOT NULL
BEGIN
    DROP TYPE typ_PendingChangeSecurity
END

IF TYPE_ID('dbo.typ_PendingMerge2') IS NOT NULL
BEGIN
    DROP TYPE typ_PendingMerge2
END

IF TYPE_ID('dbo.typ_PendingPropertyChange2') IS NOT NULL
BEGIN
    DROP TYPE typ_PendingPropertyChange2
END

IF TYPE_ID('dbo.typ_VersionedItemId') IS NOT NULL
BEGIN
    DROP TYPE typ_VersionedItemId
END
来自 Microsoft 的

None 标准查询具有 _MS 作为后缀。我怀疑有人手动调整了原始 prc_QueryPendingChanges 并将其作为备份留下。在那种情况下,您应该能够放弃此过程并重试升级。