admin管理员组

文章数量:1565821

2024年1月12日发(作者:)

修复SQL数据库MDF表出错--解决速达软件不能修复和不能备份帐套(图解)

Lt

D

修复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_新浪博客

这里只介绍从临时数据库“致远〞导出到数据库“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张表。

6:提示“有X个表复制失败〞。这里实际提示“有3个表复制失败〞。

三:如何定位表出错的行所在位置。

经过步骤“二〞系统已提示DTS导出表“出错〞,“有3个表复制失败〞。

1:现在你只要“双击错误行以获得对错误的详细描述〞,提示“在目标的行号为 X 处出错〞。

提示表“AA_BILLFLOW〞“在目的行号为3359处出错。不能在对象‘AA_BILLFLOW’中插入重复键。

提示表“AM_SYSLOG〞“在目的行号为4445处出错。不能在对象‘AM_SYSLOG’中插入重复键。

提示表“S_SALEDETAIL〞“在目的行号为3318处出错。不能在对象‘S_SALEDETAIL’中插入重复键。

2:导出表“AA_BILLFLOW〞,保存格式为EXCEL即可,找到“行号为3359〞的行,记住图中红色部份:“BILLID〞为“537〞,“BILLCODE〞为 “XSD-2021-12-12-0014〞。下面进行其它操作还要用到“BILLID〞和“BILLCODE〞。致远已同时导出3张表,见下列图。

系统日志表“AM_SYSLOG〞 和销售开单明细“S_SALEDETAIL〞作同样操作,不再提示。

四:利用临时数据库“致远〞,对已找到的“〞插入重复键的行进行修复。

1:进入SQL“企业管理器〞--临时数据库“致远〞—“表〞--“AA_BILLFLOW〞,删除表“AA_BILLFLOW〞中“BILLID〞为“537〞的整行。致远建议在SQL管理器中直

接删除表“AA_BILLFLOW〞中“BILLID〞为“537〞的整行。利用EXCEL表的目的只是为了找到表“AA_BILLFLOW〞中“行号为3359〞的错误位置。删除下列图SQL表中带黑色的行。

2:用DTS导入临时数据库“致远〞中已修复的表“AA_BILLFLOW〞。如果3张已全部修复,就可以合并导入。步骤同上面“二〞,只是步骤“二--4〞:“选择“从源数据库复制表〞〞,改为选择“在SQL SERVER数据库之复制〞,再增加选择“创立目的对象〞—“包括扩展属性〞,省略“二--5〞和“二--6〞两步,其它操作均相同。

A:导入“指定表复制〞—选择“在SQL SERVER数据库之复制〞。

B:选择“创立目的对象〞--选择“包括扩展属性〞,下一步继续执行就可以了。

五:如果你熟悉SQL数据库也可以几张表同时导出导入,同时修改。对不熟悉SQL的速友,致远还是建议你老老实实一张表一张表进行导出,再进行修复。如果你选择导出整个

数据库,那么与之相关的“出错表〞有249张,你会看花眼,致远也不建议你这样操作。上面提到的3张表关系到下列图中提到的249张表,如果修复了关键的3张表,剩余的200多张表交给SQL来处理,SQL数据库会在帐套修复过程中自动进行修复,不必过于谨慎。

六:3张已修复的表导入结束,重启电脑。翻开速达软件效劳器进行“修复〞帐套操作,“修复〞帐套完成,就可以进行“备份〞帐套操作了。到此,完美修复SQL表出错,一切完好如初,大功告成。

本文标签: 修复不能数据库出错帐套