背景:由于服务器硬盘损坏,服务器异常关机。重新进入后,数据库为质疑状态。(数据库名字上面有个感叹号,连接不了)

经过无数次的百度以及大佬们的指点下,终于成功恢复,下面来说一下方法。

第一种:

1、在服务器上停掉出问题的数据库服务,把.mdf数据库文件和.ldf日志文件拷贝至本地。

2、本地新建一个同名数据库,找到文件地址,停掉sql服务后。把.mdf文件删掉(可以也把.ldf也删掉,但删不删除我都试过了,最后都会重新生成一个新的.ldf的文件,所以这里没啥特别要注意的地方),再把服务器上拷贝的.mdf文件粘贴到该路径下面。实际上就是替换一下。

3、开启sql服务,此时数据库还是不能用,执行下面指令,使数据库进入紧急状态

alter database 出问题的数据库的名字 set emergency

(设置完后可以弄一下停止,重启sql服务,主要是看了很多答案,有的说弄一下,我只是跟风,不重启sql服务也行吧,反正我重启了)

4、执行下面指令,使数据库进入单用户模式

alter database 出问题的数据库的名字 set single_user

5.1、检查并重建日志文件

dbcc checkdb('出问题的数据库的名字',REPAIR_ALLOW_DATA_LOSS)

(我数据库8.5G,我大概跑了30分钟,另外一个配置好一点电脑跑了10多分钟,这一步就耐心等候就好了)

5.2、进行修复。如果没有错误,可以跳过。(我ldf文件没删,就报什么文件不匹配,我感觉一般都会报错,用下面的命令再执行一下,这个时候又得耐心的等候了)

dbcc checkdb('出问题的数据库的名字',REPAIR_REBUILD)

6、最后恢复成多用户模式

alter database 出问题的数据库的名字 set multi_user

然后就看脸了,刷新一下数据库,状态变为正常就大功搞成了!

第二种:

上面一种是mdf文件损坏成都可能很小,有的时候并不能成功。(我一个大佬朋友就试过,没能成功恢复)

所以这个时候就看能不能抢修数据了,一般数据库都建了维护计划,会自动备份。这个时候利用这个备份文件把数据库还原,想办法恢复当天的数据就可以了。

第一种方法中,紧急状态下数据是可以读的,所以可以通过bcp查询需要的数据导出,再导入到备份的数据上。

导出:

bcp "SELECT * from stcjoblog.dbo.t_Step WHERE s_AddTime > '2019-03-05 00:00:00' AND s_AddTime < '2019-03-05 14:00:00'" queryout E:\data_2.txt -c -t "|" -r \n -U sa -P "123456"

上面应该很清晰了,stcjoblog.dbo.t_Step  指定数据库和表,后面条件可以忽略。根据实际情况自己查

E:\data_2.txt  指定导出的路径及文件名

-U sa -P "123456"   sql server 连接的用户

导入:

bcp stcjoblog.dbo.t_Step in D:\data_2.txt -b 5000 -c -t "|" -r \n -U sa -P "123456"

这个与上面差不多,就不解释了。

忘记说了,这需要用cmd运行。

会提示数据条数成功与否,基本上就是这样!

给我指点迷津的原文地址:https://www.2cto.com/database/201209/154614.html

最新文章

  1. JS 传值 传址
  2. C# 传值给C++
  3. import()函数
  4. espcms列表页ajax获取内容 - 并初始化swiper
  5. Error:&ldquo;应用程序无法正常启动(0xc000007b)。请单击&ldquo;确定&rdquo;关闭应用程序。&rdquo;
  6. PYTHON第二天
  7. TCP服务器不回复SYN的问题
  8. PHP 字符串函数--替换、正则匹配等
  9. C#的winform小合集
  10. 获得临时文件目录(Temp文件夹)
  11. JavaScript中常谈的对象
  12. DEM渲染洼地淹没图(转)
  13. aspose 解决插入html后字体问题
  14. git分支管理之Bug分支
  15. springMVC_03注解完成hello案例
  16. 用2个DATETIMEPICKER分别输入时间和日期,再合并成一个DATETIME类型
  17. 通过web.config来自定义output caching缓存
  18. Django之三种文件上传
  19. Django 将数据库查出的 QuerySet 对象转换为 json 字符串
  20. django项目中使用项目环境制作脚本 通过终端命令运行脚本文件

热门文章

  1. Element div is not closed
  2. vs code 插件推荐
  3. c++流操作
  4. js switch case注意事项
  5. How to add libraries to “External Libraries” in WebStorm/PhpStorm/Intellij
  6. 用AI制作炫酷效果
  7. javascript札记
  8. div 自适应宽度
  9. Winpython环境下mayavi配置
  10. 编译 link