目录

SqlServer数据库恢复系统数据库

SqlServer数据库恢复系统数据库

温馨提示:本方法存在数据丢失风险,请谨慎操作,按本文操作出现数据丢失问题,与作者无法!

1背景

之前在本地安装了SqlServer数据库,安装好后,系统更新了SqlServer的漏洞,周末休息后,再次连接该数据库,发现数据库无法连接。在SqlServer配置器中无法启动服务并报错,通过查询系统日志,出现如下错误信息:

https://i-blog.csdnimg.cn/direct/dcd21645f0f74770bc58c6b7aef8c54e.png https://i-blog.csdnimg.cn/direct/2ce93daaae304dffa53230614389a2a8.png

2问题产生原因

在SqlServer的漏洞升级过程中,出现升级未完成、丢包等,导致数据库服务无法启动。

3解决方案

根据日志问题,需要重新恢复master数据库,此处有俩种方法,一种通过直接复制相同配置数据库中的文件,进行替换;另一种重新生成master数据库。因第一种解决方法尝试失败,因此本文将使用第二种解决方案实现。

3.1备份相关数据

进入如下命令,进入单用户模式,对相关数据库进行备份(master、model、msdb、tempdb、重要业务数据库)

net start MSSQLSERVER /f /T3608
命令说明:
net start:系统命令
MSSQLSERVER:具体的SqlServer服务名称
/f:强制性启动服务
/T3608:使SqlServer以最小配置启动

通过如下命令,对数据库内容进行备份:

sqlcmd -S .\MSSQLSERVER -Q 
"RESTORE DATABASE master FROM DISK = 'D:SqlServer\MSSQL16.MSSQLSERVER\MSSQL\Backup\master.bak' WITH REPLACE;"
命令说明:
sqlcmd:执行T-SQL语句
-S .\MSSQLSERVER:-S参数指定要连接的SQLServer实例,.\MSSQLSERVER要连接的实例名称(若使用其报错,可使用“.”,此时连接默认数据库)
-Q:其后跟要执行的T-SQL语句
"RESTORE DATABASE master FROM DISK = 'D:\SqlServer\MSSQL16.MSSQLSERVER\MSSQL\Backup\master.bak' WITH REPLACE;"
此处一定不要忘记双引号,双引号内为要执行的sql语句。
RESTORE DATABASE 数据库名称 FROM DISK='备份文件要存储的地方\数据库名称.bak' WITH REPLACE;

在备份过程中,若存在报错,那么恭喜你,无法使用该种方案在不丢失数据情况下,恢复系统数据库!!!

3.2恢复系统数据库

以管理员身份运行命令窗,通过cd /d,进入SqlServer安装介质目录,运行如下命令,重新恢复系统数据库

setup /QUIET /ACTION=REBUILDDATABASE /INSTANCENAME=MSSQLSERVER /SQLSYSADMINACCOUNTS=admin/admin /SAPWD=sa

不要直接复制,要进行更改

上述命令来自于官网,具体参数大家可以点击下方官网连接,进行查看配置,并对重新生成数据库进行恢复: [重新生成系统数据库 - SQL Server | Microsoft Learn

必须重新生成系统数据库才能修复 master、model、msdb 或 resource 系统数据库中的损坏问题或者修改默认的服务器级排序规则。

https://csdnimg.cn/release/blog_editor_html/release2.3.7/ckeditor/plugins/CsdnLink/icons/icon-default.png?t=O83A “重新生成系统数据库 - SQL Server | Microsoft Learn”)

上述代码运行成功后,无任何提示,当再次出任命令输入行时(如下图),说明系统库重新生成成功,若中间出现各类输出,说明运行失败,根据提示,到相关目录下寻找日志文件,根据日志文件,解决问题后,重新运行命令。

https://i-blog.csdnimg.cn/direct/fbabeb0a6cc84c37934a7c6022dc2243.png

进入 SqlServer 配置器,重新启动 SqlServer 服务即可。

3.3 还原备份数据库

使用 SMSS 软件,连接刚刚恢复的数据库,进行恢复。此处建议仅恢复系统数据库的数据,不要保留复制设置,否则任会出现无法启动的情况。

4 总结

以上是该问题的一种解决方案,该种方案存在数据丢失风险,请大家谨慎操作。数据无价,为了避免造成数据丢失,大家要养成数据备份良好习惯。同时,建议大家关闭系统的自动更新,避免因系统更新导致数据库出现问题。个人能力有限,文章存在不足之处,欢迎大家积极评论。