微软虐我千百遍——记一次比较漫长的TFS数据库迁移

原由

七月三日早晨刚到公司,同事就跟我讲TFS开始返回 TF30042错误,报告数据库已满。按照处理问题的第一直觉,我上bing的英文网站搜了一下,发现是部署TFS的时候使用的SQL Express限制致使的。因而就开始漫长的数据库迁移之旅。html

第一阶段:自信满满

给整个开发团队发了消息,通知TFS临时中断半小时到一小时。关停了TFS全部的相关服务,找到SQLExpress的数据库文件,而后拷贝到数据库服务器上。因为数据库文件比较大,拷贝大概花了半小时。因为最近在思考怎么制定一个比较好的发布流程,在这个拷贝过程当中,把基本的发布工具的设计肯定了下,还有点沾沾自得。拷贝完成后开始附加数据库,结果SQL服务器提示现有数据的版本太高,没法兼容。检查了一下SQL Expres的版本,要比SQL 2008R2高个好几十,随手百度了下,也没找到820版本对应的数据库的发行版本号,一狠心决定部署下SQL 2016,正好能够研究一下SQL 2016对结构化数据(json等)执行属性查询的功能。因而又开始了下载过程。又花了半个多小时,期间给团队成员发了个延期通知,许诺下午一点钟以前搞定。一边等待下载,一边继续写工具,虽然麻烦,可是一切尽在掌握。sql

第二阶段:略有腹诽

终于下载完安装镜像,准备开始部署数据库服务。可是安装程序提示当前运行的服务器为WIN SERVER 08R2,SQL 2016不支持。因而又开始着手准备兼容的WIN Server服务器环境。当时也没有细想,直接就选用了WIN SERVER 2016。下载大概花了一个小时,慌里慌张的,中途还把语言包看成安装文件下载下来了。中途去开了一个会议,回来的时候,已经下午三点钟了,显然的,给团队的承诺已经无限延期了。因为服务器有点久了,并且是在虚拟机上安装,安装过程持续了大概四十分钟。而后部署数据库服务、迁移数据库文件。迁移完成以后,须要将TFS的数据库绑定重定向。这里有几个作法:1:修改配置文件 2:使用TFS的配置工具,初始化当前配置,并从新配置数据库。出于慎重考虑,选择了第二种。参考:http://www.accentient.com/blog/unconfiguring-team-foundation-server-2013/数据库

tfsconfig setup /uninstall:allexpress

从新启动TFS的配置管理器进行TFS配置。执行到数据库这一步的时候,发现只能填写一个host名称,没法提供登录信息。因而开始了各类脑补:TFS默认配置了一个登录身份信息?TFS使用了一个配置文件?TFS仅支持基于域服务器场的部署?好吧,鉴于微软的方便使用、无脑点击下一步的做风,最后一个可能性最大。仍是经过bing搜索了下,找到了确定的答案。参考:https://serverfault.com/questions/457006/how-to-connect-tfs-2012-with-a-remote-database-using-sql-server-authentication 以及 https://serverfault.com/questions/457006/how-to-connect-tfs-2012-with-a-remote-database-using-sql-server-authentication
心中虽然腹诽,可是还算是松了一口气,毕竟简单的集成域环境也还简单。看下时间,已经五点半了,因而依然开始了无尽之旅。json

第三阶段:无尽的折磨

按照通常性套路,开始修改客户机的dns,指向dc的ip,同时为dc所在的服务器添加了一条host,防止一些乱七八糟的没法访问。点击加域。5秒,15秒,30秒......没法找到网络路径。虽然内心奇怪,可是仍是继续bingstackoverflowserverfault,同时也象征性的百度。而后不停检查TCP/IP NETBIOS Service,检查文件和打印机共享,检查dns,检查和禁用ipv6,检查防御墙防火墙例外,关闭、开启防火墙,检查hdcp,检查ip,检查ping。快马加鞭的检查了三四个小时,仍然无果以后开始自检,首先查看window server的日志,发现返回状态码53,而后检查system windows debug下的日志,发现net use 指令致使了53的结果码。而后开始疯狂的搜索与net use相关的,与53状态码相关的,与network path not found相关的资料,开始拿不一样的服务器作对比实验。最后发现,win server 2008r2的服务器都能成功入域,而win server 2016与win 10都没法成功。开始推测时客户机的问题,而后再一次对客户机作了各类检查,仍然无果。
对客户机和服务器的行为总结以下:小程序

  • 网络通讯正常,进行入域请求的时候,能够正常接收到401的认证相应
  • 能够提交身份认证信息,可是没法成功认证,即便提供了错误的用户名和密码,也没法获得认证结果
  • net use \host$IPC 指令没法正常使用

期间好几回想先放一放,可是每次都有一种错觉,彷佛这个问题立刻就要解决了。等到实在困得不行的时候,已通过了凌晨一点,实在是乏的不行,加上还连累另一个同事一块儿,遂做罢。windows

第四阶段:柳暗花明

休息了一夜,信心又足了不少,决定继续怼这个问题。仍是从net use这个指令开始,仍是以大量的搜索为基础。在搜索的过程当中,发现了net的另一个指令,net view。这个指令时用来查看共享文件夹的。共享文件夹这个名词让我忽然想到一件事情,之前公司为了共享安装包,在服务器上开了共享目录。可是有一天win 10的机子所有没法访问了,而win 7和win server 2008r2都正常。猜想多是相同的缘由。因而开始搜索和收集这方面的资料。在一个论坛里面,偶尔看到了一句评论,和SEP 12也就是证书有关。又忽然想起来,年中的时候为了测试微信小程序,在服务器上安装了证书(误操做),同时升级了服务器的TLS版本.......或许你们觉得我立刻要发现了真相,走进了科学 ——其实否则,我以为愈加头大了,由于这里的可能性太多了,因此我打算换个思路解决问题。
从net use和net view这两个指令的执行状况来看,应该是服务器的设置问题,致使了部分客户机没法访问,因此我向换个服务器——也就是迁移DC。迁移DC就得首先安装备用的DC,参考:http://www.cnblogs.com/yankliu-vip/archive/2012/06/13/2547646.html微信小程序

dcpromo服务器

安装完以后,忽然又想到,其实我并不必定要主控DC迁移,我须要的是一个能够正常加域的入口,因而我将客户机的DNS指向了新配置好的DC。接下来操做,就比较丝滑了。微信

回顾与总结

总的来说,在这个将近二十个小时里面,我经历了这些:

TFS数据库满了=>发现因为sqlexpress的限制=>计划升级sql服务版本=>sqlexpress的内核版本很高=>安装sql2016=>sql2016不支持winserver2008r2=>安装winserver2016=>部署时发现不支持数据库用户身份验证=>集成域环境=>winserver2016没法加入winserver2008r2的域环境=>bingstackoverflowserverfault=>都不知足=>继续bingstackoverflowserverfault=>发现别人在贴日志=>分析日志=>net use指令返回53=>bingstackoverflowserverfault=>都不知足=>论坛里面有人提到SEP12证书的问题=>删除域控下面安装的证书=>无效=>继续搜索net use指令相关问题=>尝试使用net view指令=>发现win10和winserver2016都没法使用共享文件夹相关的功能=>回忆起来之前win10是能够网络共享的=>回忆起来这彷佛是和升级了TSL版本有关=>意识到本身作了不少无用功=>尝试使用tfsdeleteproject先删除部分项目释放空间=>发现因为数据库满了,删除功能没法正确使用=>
意识到能够经过新建项目集合的方式来处理,可是因为数据库已满,放弃=>继续从DC这个点解决问题,决定迁移DC到一个干净的环境=>安装了新的备份DC=>对备份DC 执行net use指令一切正常=>意识到能够将客户机的dns指向备份dc来解决问题=>成功加入域=>尝试在其余的服务器上部署tfs=>发现tfs版本不兼容迁移的数据库=>升级tfs版本到update1=>开始迁移=>数据库登陆名冲突=>更改登陆名=>全文索引服务未安装=>安装全文索引服务。

虽然我只是兼个部署,可是回头想一想,其实很能发现问题:

  • 部署管理有问题,DC不该该和其余角色混淆
  • 使用产品的时候,没有仔细阅读产品说明书
  • 对当前部署的产品的版本没有清醒的认识
  • 决策的时候,没有仔细收集资料,没有分析可行性
  • 决策冲动,不少时候为了直观而增长了复杂度
  • 分析问题的方式有问题,不少时候应该从当前环境的日志着手,而不是盲目的binggooglestackoverflow
  • 解决问题的思路有问题,不少时候绕道实际上是更好的选择
  • 作部署工做的时候,千万很差和环境讲道理
    固然此次经历也不满是坏事,总的来说,我确认了一点,我确实拥有一颗还算坚韧的心。

关于net use 53 以及 network path not found

这个问题还没有解决,欢迎道友指路。

相关文章
相关标签/搜索