问题介绍
某个客户要求我上门维修Mssql 数据库置疑,原因是意外的断电导致软件无法正常使用,遂上门查看,发现数据库是上古时代的宝贝,2000版本的MSSQL。
这个版本没有过多的文档,有的只是含糊其辞的一段命令,大多数文章的介绍都是在教如何通过 alter database dbName set
之类的命令来进入紧急和单用户模式,然后使用dbcc checkdb ('dbName',repair_allow_data_loss)
这样的命令去修复。
实际测试
按照网站介绍,执行dbcc checkdb
之后,数据库仍然是不可用状态,
这段内容明天再写我困了
修复方法
分析我遇到的情况,可能是意外断电导致事务日志没有正确保存,那么只要关闭所有链接,重生成一个事务日志文件就好了,命令如下,注意:在执行命令过程中不要使用Mssql的企业管理器工具。建议执行前重启数据库所在服务器,且在执行前一定事先备份。
update sysdatabases set status = -32768 where name = 'dbName'
--将数据库置为紧急模式
go
alter database dbName set SINGLE_USER
--将数据库置为单用户模式
go
alter database dbName set online
--把数据库拉上线
go
dbcc rebuild_log ('dbName','C:\Path\to\logfile.LDF')
--重新在指定位置创建事务日志文件,以恢复数据库的可用性
go
update sysdatabases set status = 0 where name = 'dbName'
--恢复数据库状态
go
alter database dbName set MULTI_USER
--恢复为多用户模式
go
之后便可以正常使用数据库,顺便吐槽那个六条命令开价三百块的所谓数据库维修奸商!
这篇文章写得深入浅出,让我这个小白也看懂了!