修复SQL数据库MDF表出错--解决速达软件不能修复和不能备份帐套(图解)
致远在“SQL Server无日志文件的恢复”中讲到:衡量数据恢复成功与否的标准:第一:能不能进行速达帐套的修复操作,第二:能不能进行速达帐套的备份操作,附合上述两个标准说明数据恢复成功。如不能修复或不能备份现象已出现,在修复或备份过程中系统会提示MDF“表出错”,该如何修复MDF“表出错”呢?下面将分步进行详细的介绍。对使用SQL数据库引擎的用友、金蝶等用户,如出现同类错误,同样能修复MDF“表出错”错误。
运软件行环境: SQL SERVER 2000 SP4 速达 V5 V3.90 ERP 试用版 一:不能修复或不能备份出错提示。
1:不能修复分两种:A:不能修复帐套,也不能备份帐套;B:不能修复帐套,但能备份帐套。
下图1提示“帐套修复失败:修复S_SALEDETAIL表时出错。
2:不能备份只有一种:既不能修复帐套,也不能备份帐套。这里示范用到的为不能修复帐套,也不能备份帐套这种。
下图2提示“数据据库DBCC检查发现以下错误,不能备份。表错误:表“AA_BILLFLOW”,行的键缺少或无。
从上面两张图中描述,可以发现数据库中的两张表出错:销售开单明细“S_SALEDETAIL”和底稿表“AA_BILLFLOW”。
经过分析:
发生表出错的主表为:销售开单明细“S_SALEDETAIL”; 发生表出错的从表为:底稿表“AA_BILLFLOW”;
发生表出错的辅表为:系统日志表“AM_SYSLOG”。第三张表修不修复对帐套修复和备份操作几乎没影响。为更彻底处理出错的表,致远把系统日志表“AM_SYSLOG”也列入要修复SQL数据表中。
二:如何发现SQL数据库中出错的表。
如何发现SQL数据库中出错的表,致远用底稿表“AA_BILLFLOW”、系统日志表“AM_SYSLOG” 和销售开单明细“S_SALEDETAIL”3张表同时进行示范操作。
用DTS导出,从速达软件“SD0001”数据库导出表到临时数据库“致远”的过程省略。方法可参阅我的博文
Excel表如何导入SQL数据表中──速达软件操作示范_致远
_acoffe_新浪博客
http://blog.sina.com.cn/s/blog_610f242e0102v5ep.html
这里只介绍从临时数据库“致远”导出到数据库“SD0001”的过程。利用临时数据库“致远”中未经修复的SQL表导出,如果发现表导出出错,系统会自动提示,“有X个表复制失败”。
1:用DTS导出,首先创建临时数据库“致远”。
致远习惯用:“ 致远”作临时数据库代号。只填临时数据库“致远”名称,其它均忽略。临时数据库中致远已导入底稿表“AA_BILLFLOW”、系统日志表“AM_SYSLOG” 和销售开单明细“S_SALEDETAIL”3张表。
2:选择“数据源”。“数据源”为临时数据库“致远”。
3:选择“导出目的”。目的数据库为速达“SD31502_SD0001”。
4:选择“从源数据库复制表”。
5:选择“源表”。“源表”为“AA_BILLFLOW”、“AM_SYSLOG” 和“S_SALEDETAIL”3张表。