SQL Server 重新初始化系统数据库中的单引号问题

时间:2023-07-04 13:00:20

在最近的数据库跨机房迁移中,由于硬件的限制,需要滚动式地将数据库一台台迁移到新机房,先在新机房搭建一个新环境,将数据迁移过去,再将旧机房的机器下架搬到新机房,重新配置后用于下一轮的升级,重新配置过程中,有以下几个问题:

1:由于机房和IP已经发生变化,因此需要按照命名规则修改服务器名称。

2:原数据库上的数据如登录账号/作业/链接服务器等等需要删除

3:部分服务器因磁盘变动,仅保留系统盘,部分SQL Server文件(如果系统数据库文件)已经丢失

对于问题1和问题2,可以进行手动删除或者写个脚本进行清理,但对于问题3,有三种处理方式:

1:卸载SQL Server然后重新安装

2:重新安装OS和SQL Server

3: 修改注册表信息,然后重新初始化系统数据库

方式2最简单但也最耗时,方式1有卸载失败和卸载不干净导致无法重装SQL Server的风险,而方式3相对简单,且能同时处理问题1和问题2,因此优先选择方式3来处理。

操作步骤:

1:修改服务器IP和服务器名称

2:启动SQL Server服务,根据服务启动的错误日志找到已缺少的文件路径,修改注册表将文件指向现有磁盘上某个文件夹

3:重新初始化系统数据库。

--============================华丽的分割线========================--

重新初始化系统数据库可以用命令在cmd模式下完成,理论上参数值可以使用单引号双引号来,就这么个简单问题上,让我一度怀疑人品和人生。

第一次使用域账号xxx\xxxxx,报错用户不存在,以为账号中的反斜杠没写对;

第二次使用域账号xxx/xxxxx,报错用户不存在,以为域账号有问题;

第三次使用本地账号.\administrator,报错用户不存在,以为A没有大写;

第四次使用本地账号.\Administrator,报错用户不存在,以为人品有问题;

第五次使用本地账号ServerName\Administrator,报错用户不存在,开始质疑人生

幸好作为一个老司机,在我几次确认后,我还能准确判断administrator这几个因为单词字符没写错,再次感谢我的初中英语老师。

万幸之前做过小笔记,保留着上次成功执行的脚本,复制过去竟然成功执行,细细对比,竟然只是单引号双引号的问题,心中无数小马奔腾啊!!!

正确打开姿势:

--重建系统数据库
--命令行下转换到安装文件setup.EXE所在目录执行如下命令
--/QUIE 指定在没有任何用户界面的情况下运行安装程序。
--/ACTION=REBUILDDATABASE 标识重建系统数据库
--/INSTANCENAME=MSSQL200801 实例名称
--/SQLSYSADMINACCOUNTS="ALEX/LIDONGSHENG"--需要添加的windows账号。最好是启动账号
--/SAPWD=54546546 SA密码 Setup /QUIET /ACTION=REBUILDDATABASE /INSTANCENAME=MSSQLSERVER /SQLSYSADMINACCOUNTS=".\administrator" /SAPWD="SA@PWD"

--===========================华丽的分割线=========================--

总结: 作为DBA,靠经验吃饭,因此好记性不如烂笔头,多做笔记没坏处

SQL Server 重新初始化系统数据库中的单引号问题