灾难+置疑修复.sql 5.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. 数据库置疑的修复处理方法
  2. 1. 停止SQL Server的服务,备份SQL Server安装目录下的\data子目录一个hbposv7_log.ldf(也
  3. 有可能非此命名)。 
  4. 2. 启动SQL Server服务(如已停止),创建一个新的数据库,命名为原来数据库的名字,比如商业
  5. 之星7的总部数据库为hbposv7,分店为hbposv7_branch。 3. 停止SQL Server 
  6. 4. 把老数据库的MDF文件(hbposv7_data.mdf)替换新数据库的相应的MDF文件,并把LDF文件
  7. (hbposv7_log.ldf)删除。 
  8. 5. 重新启动SQL Server服务,然后在查询分析器里运行如下命令:
  9. Use Master go  
  10.   
  11. sp_configure 'allow updates', 1
  12. reconfigure with override go 
  13. begin tran 
  14. update sysdatabases set status = 32768 where name = 'hbposv7' commit tran go 
  15. 6. 停止SQL然后重新启动SQL Server服务,然后在查询分析器里运行如下命令,(更换日志文件
  16. 路径地址): 
  17. use master go 
  18. DBCC TRACEON(3604) 
  19. DBCC REBUILD_LOG ('hbposv7','c:\Program Files\Microsoft SQL Server\MSSQL\Data\hbposv7_log.ldf') 
  20. --在这里,请输入你的数据库的路径 Go   
  21. 7. 停止SQL然后重新启动SQL Server服务,然后在查询分析器里运行: use master go 
  22. update sysdatabases set status = 8 where name = 'hbposv7' go 
  23.   sp_configure 'allow updates', 0 
  24. reconfigure with override go  
  25. 8. 运行dbcc checkdb(hbposv7) 检查数据库的完整性 
  26. 9. 一般情况下置疑后都需要修复数库,按如下步骤操作,以下部分同“数据库损坏的常规修复处
  27. 理方法”。 --请在查询分析器中执行下列语句.执行前断开其它所有数据库连接,最好是断开网线 --如果不是该数据库名,请将数据库改为要修复的数据库 
  28. USE master Go 
  29. --单用户模式 
  30. sp_dboption 'hbposv7', 'single user', 'TRUE' go 
  31. --数据库检查 
  32. DBCC CHECKDB ('hbposv7') Go 
  33. --如果返回结果出现了红色的提示文字,说明数据库中存在错误,需要修复 --数据库修复 
  34. DBCC CHECKDB ('hbposv7','repair_rebuild')
  35. Go 
  36. --再次数据库检查,如果返回结果中没有了红色的提示文字,说明修复成功; DBCC CHECKDB ('hbposv6_branch') Go 
  37. --否则意味着还需要更高级别的修复;尝试将上面修复语句的'repair_rebuild'换为'repair_allow_data_loss'再试,之后再次检查数据库。 
  38. --注意:语句DBCC CHECKDB ('hbposv7','repair_rebuild')和语句DBCC CHECKDB ('hbposv7',' repair_allow_data_loss ')可多次执行(一般情况下5次都可修复成功),直到执行完后用数据库检查语句DBCC CHECKDB ('hbposv7')后没有了红色的提示文字,并且会CHECKDB 发现了 0 个分配错误和 0 个一致性错误(在数据库 'hbposv7' 中),这样表示数据库修复OK,
  39. --退出前请一定要执行以下语句返回到多用户模式 
  40. EXEC sp_dboption 'hbposv7', 'single user','FALSE' go   
  41. 注:都要把 hbposv7替换成真实的数据库名字,每个产品的数据库名称是不一样的。
  42. ------------------------------
  43. 数据库损坏的灾难性修复方法—BCP处理方案
  44. 在进行操作前,请先备份数据库,同时备份mdf和log文件),操作步骤如下: 
  45. 1. 首先在D盘建立TESTDB目录,并在查询分析器中选择思迅数据库运行: 
  46. use hbposv7 go 
  47. select 'bcp hbposv7..'+name + ' out '+'d:\testdb\'+name+'.txt -c -Usa –S localhost -P' FROM SYSOBJECTS WHERE TYPE = 'U' order by name ORDER BY NAME --把查询的结果集全部复制下来,新建一个文本文件取名为“导出.bat”把结果集复制进去并保存,--把该文件存放在d盘TESTDB目录下。 
  48. 2. 在查询分析器中选择思迅数据库运行:  
  49. select 'bcp hbposv7..'+name + ' in '+'d:\testdb\'+name+'.txt -c -Usa –S localhost -P ' FROM SYSOBJECTS WHERE TYPE = 'U' order by name order by name 
  50. 把查询的结果集全部复制下来,新建一个文本文件取名为“导入.bat”把结果集复制进去并保存,把该文件存放在d盘TESTDB目录下。 
  51. 3. 运行“导出.bat”(注意:该文件双击即可运行),数据库中的数据会倒出到TESTDB目录中。 4. 删除原来的问题数据库,用服务端安装程序server.exe重新安装空库。
  52. 5. 在查询分析器中选择思迅数据库运行: 
  53. use hbposv7 go 
  54. select 'delete '+name FROM SYSOBJECTS WHERE TYPE = 'U' order by name go --然后把返回的结果集复制,新建一个查询分析器窗口,把复制的内容粘贴后运行! 
  55. 6. 最后运行“导入.bat” ,倒入成功后就恢复数据库了! 7. 最后在查询分析器中选择思迅数据库运行 
  56. use hbposv5 go 
  57. update t_sys_system set sys_var_value=(select max(flow_id) from t_im_flow where num2=1) where sys_var_id='ioflow_pointer' go 
  58. 8. 在查询分析器中选择思迅数据库运行,此步骤可不做,但做一下最好。 
  59. use hbposv7 go 
  60. select 'update statistics  '+name FROM SYSOBJECTS WHERE TYPE = 'U' order by name go --然后把返回的结果集复制,新建一个查询分析器窗口,把复制的内容粘贴后运行! 9. 日结,检查数据。 
  61.  
  62. --注:都要把 hbposv7替换成真实的数据库名字,每个产品的数据库名称是不一样的。