上一篇说到虚拟机启动不了, 原因是有一块VHDX的文件找不到了. 解决了这个问题之后, 又遇到了另一个问题, 那就是我的这台SQL Server的虚机启动之后, 我的几个重要database变成了suspect状态.

 

原因很清楚, 因为切换过了装有DB Logs的VHDX.

 

[错误做法] 当时是这样做的: 在虚拟机和应用程序都在运行的状态下, 拷贝了存有DB Logs(ldf文件)的VHDX到另一个分区上. 同样在虚机和应用程序都live的情况下, 切换VHDX. 结果, 由于DB的data file和log file不一致, 就发生了suspect的问题.

 

[修复做法] 正确的做法是从backup中恢复DB. 但我的测试环境没有备份(-_-||), 因为几个T的数据备份就要花好久. 我的做法是先把所有使用这些DB的虚拟机都shutdown掉. 然后切换回原来的VHDX, 这样data和log file就一致了. 出现问题的DB状态正常之后, Trucnk掉transaction log. 之后拷贝ldf文件到别的地方. 再切换回去出问题的那个VHDX. 把ldf文件复制到正确的路径下. 数据库终于恢复了正常.

 

[正确做法] 痛定思痛, 下次再做这样的事情(更改包含MDF或LDF文件的VHDX)的时候, 应该这么做:

1. shundown运行着应用程序的虚拟机. 抑或是在SQL Server上把DB offline掉.

2. 拷贝VHDX到其他的LUN上.

3. 切换VHDX路径.

4. 启动虚拟机. 或是online掉所有的数据库.

 

但是, 王道是:"备份数据库"!

 

不管是suspect还是recovery pending, 只要有备份在, 你就无敌了!

最新文章

  1. HTTP 传输内容的压缩
  2. Java 反射机制及Annotation
  3. Statspack安装配置及使用
  4. String定义与方法
  5. Silverlight动画的基本知识、关键帧动画
  6. mvc4 整合nhibernate3.0配置
  7. 图片延时加载jquery.inview.js用法详解
  8. 理解margin负值
  9. 《Android进阶》之第三篇 深入理解android的消息处理机制
  10. Linux常用命令-jdk和Tomcat
  11. Thinkphp报错 -- “_STORAGE_WRITE_ERROR_”
  12. 用matlab给图像加高斯噪声和椒盐噪声(不调用imnoise函数)
  13. springboot2.0.3源码篇 - 自动配置的实现,发现也不是那么复杂
  14. 利用URLConnection http协议实现webservice接口功能(附HttpUtil.java)
  15. Javascript中页面加载完成后优先执行顺序
  16. 从零开始学 Web 之 BOM(二)定时器
  17. 背水一战 Windows 10 (44) - 控件(日期类): CalendarView, DatePicker, TimePicker
  18. yii---生产链接的方法
  19. Monkey、Monkeyrunner之间的区别
  20. 2014-8-5 NOIP(雾)模拟赛

热门文章

  1. Python全栈开发之4、内置函数、文件操作和递归
  2. Map 的四种遍历方式
  3. 简易解析ajax,javascript-XMLHttpRequest
  4. vs.net 效率提升-自定义快捷键
  5. Web开发——服务器端应用技术简单比较
  6. 详细理解Java虚拟机的运行过程
  7. 【BZOJ 2007】 2007: [Noi2010]海拔 (平面图转对偶图+spfa)
  8. BZOJ1001: [BeiJing2006]狼抓兔子 (最小割转最短路)
  9. 【带修改的主席树】BZOJ1901-Dynamic Rankings
  10. bzoj 2440