【问题标题】:Complicated TFS 2017 Upgrade复杂的 TFS 2017 升级
【发布时间】:2017-05-14 12:02:48
【问题描述】:

我希望将我当前的 TFS 2015.3 实例升级到 2017。但是,由于一些复杂的因素,它不会像宣传的那么容易。我的场景似乎没有记录。

  1. 我将安装一个新的域控制器(从 Server Essentials 2012 R2 迁移到 Server Essentials 2016)。
  2. 当前操作系统为Server 2012 R2;我也会将此升级到 Server 2016(全新安装到新 VM)。
  3. 这两个新 VM 必须保留与以前相同的 NETBIOS 名称。
  4. 当前 SQL Server 实例为 2014;我也将把它升级到 SQL Server 2016。
  5. 当前 TFS 实例的 SQL Server 实例位于单独的 VM 上。我想整合它并将所有内容放在一个 VM 上。 (我是一名独立开发人员,我的服务器负载非常轻,我想摆脱额外的复杂性和开销。)

这仅仅是安装 TFS 2017 并从 2015.3 生成的备份恢复的问题吗? 2017 会在恢复过程中自动应用任何架构更改等吗?就这么简单吗?

我能找到的最接近的问题是here,但不幸的是它并不能完全解决我的情况。

【问题讨论】:

    标签: tfs tfs-migration


    【解决方案1】:

    我们面临几乎同样的事情,因为我们的服务器是为 TFS 2013 创建的,因此安装了 SQL 2012。

    是的,实际上就像您的问题所述的那样简单。当您附加从备份中恢复的集合时,将应用所有架构更改。在此之前您配置 TFS 的应用层并跳过

    重要的是在进行备份之前分离集合。这会将各种配置复制到集合数据库中,以便它是独立的并且可以移动到另一台服务器。然后,您只需将集合数据库移动到新服务器。

    列表形式如下:

    1. 使用 TFS 管理控制台分离集合
    2. 使用 SSMS 备份收集数据库,例如Tfs_YourCollection
    3. 使用 SSMS 在新服务器上恢复收集数据库
    4. 安装 TFS
    5. 配置应用层,跳过创建新的 DefaultCollection
    6. 在 TFS 管理控制台中附加集合,可能需要一些时间,具体取决于您的集合大小。

    你可以在 3 之前做 4+5。

    注意:更改域会增加复杂性。未迁移 SharePoint 和报告网站!

    【讨论】:

    • 这令人鼓舞,谢谢。我可能会将其标记为答案,但我正在花时间将所有这些放在一起。给我几个星期,好吗?我不会忘记你的。
    • 听起来您是在指示本地数据库级备份/恢复,而不是相同的 TFS 版本(它也管理 RS 加密密钥)。你能澄清一下吗?
    • 在原始 SQL 2014 安装期间使用的域用户帐户是否重要?我必须在 SQL 2016 配置中使用相同的配置吗?还是任何帐户都可以这样做?
    • @InteXX:是的,我说的是 SQL 备份 - 将澄清答案。我不知道 RS 加密密钥,但会调查。用户无关紧要,只要它对 SQL 服务器实例具有正确的权限即可。
    • 好的,谢谢。 Jesse(在此线程中)建议如果我恢复到新的 AD 域(我打算这样做),我最终会遇到用户问题,除非我执行一组复杂的域移动步骤。但他的建议涉及不采用分离/恢复/附加路线。如果我选择 detach/restore/attach 方法,你会预料到这样的问题吗?
    【解决方案2】:

    除了进行分离/附加升级之外,您还可以使用另一个选项。分离/附加升级过去曾遇到过问题,尽管这些问题中的大部分已得到解决,但它被认为是一个次优的解决方案。

    改为执行升级安装。

    对所有 TFS 2015u3 数据库进行完整备份,并将它们恢复到新的 SQL Server 实例。您可以使用 Team Foundation Server 管理控制台创建完整备份,或者在停止每个应用程序层(在您的情况下可能只有一个)上的所有 TFS 服务后使用 SQL Server Management Studio 使用

    TFSServiceControl 静默

    现在安装 TFS 2017 并执行“升级”安装并将其指向您现有的数据库。它会询问您是否要升级它们以及您是否有有效的备份。

    一段时间后(升级可能需要一段时间,因为数据在数据库中移动),您的 TFS 服务器将重新联机。安装向导通常会完成所有需要的映射工作。

    有一个重要的警告,这与域更改有关。如果你是 安装在同一个 Windows Active Directory 域中,你很好。但是,如果您的服务器在工作组模式下运行,您可能希望在运行升级步骤之前重新映射 TFS 数据库中的所有身份。所以安装 TFS,但不要配置。运行以下命令

    TFSConfig Identities /change /fromdomain:Domain1 /todomain:Domain2
    

    然后使用升级选项让 TFS 使用您的数据库备份。 The full explanation on doing a cross domain server migration is documented on MSDN在您确认升级成功之前,请务必保护您的升级前备份。

    【讨论】:

    • 这也很有帮助,谢谢。但是我仍然不确定人们说“备份”时的意思。这是否意味着使用 T-SQL 进行 DB 级备份,还是意味着 TFS 管理控制台上的备份/恢复功能?
    • 仅供参考,我还将安装一个新的 DC(我现在使用的是 Essentials 2012 R2,并将迁移到 Essentials 2016)。我认为您的警告仍然适用,即使域的实际名称(以及 DC 名称和 TFS 成员服务器名称)将保持不变。对吗?
    • 如果域名和用户名保持不变,并且如果域服务器被添加到现有域,然后在使旧域控制器脱机之前提升为主 AD 控制器,您将拥有没有问题。如果您安装新的域控制器并手动重新创建用户,这些用户的 SID 将不同,您将需要“修复它们”,否则它们将面临在升级过程中被复制的风险(无法撤消)。
    • "...这些用户的 SID 会不同..." 老鼠。这就是我要做的方式。您无法使用 Essentials 进行 DC 促销。如何“修复它们”?
    • 我终于完成了。进展相当顺利,但由于新旧域名名称相同,即使是微软技术人员也不确定用户迁移到新域是否会顺利进行。我是这样做的: (1) 硬件从 _SERVER3 移动到 _SERVER4,以便在同一个 VM 上获取所有内容; (2) TFS 从 2015.3 升级到 2017.2; (3) 域从_SERVER4 移动到SERVER4; (4) 硬件从 SERVER4 移动到 SERVER3。最后一步,在微软技术人员的建议下,我从 SQL 2014 转到了 SQL 2016;该指南对 SQL 版本显然不正确。
    猜你喜欢
    • 2017-04-12
    • 1970-01-01
    • 2018-11-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-24
    • 2018-07-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多