3

我有一些从 FoxPro 数据库导入数据的 SQL Server DTS 包。直到最近,这一切都很好。现在,从 FoxPro 表之一导入数据的脚本将大约 470,000 条记录轰炸到导入中。我只是将数据拉入带有可为空的 varchar 字段的表中,所以我认为这一定是一个奇怪/损坏的数据问题。

你会使用什么工具来追踪这样的问题?

仅供参考,这是我得到的错误:

源列 1(“field1”)的数据不可用。您的提供程序可能要求所有 Blob 列都位于源结果集中的最右侧。

此表中不应有任何 blob 列。


感谢您的建议。我不确定这是否是腐败问题。我刚开始从我的 MSDN 订阅中下载 FoxPro,所以我看看能不能打开表。SSRS 打开表,在遍历所有记录之前它只是窒息。我只是想找出它有问题的记录。

4

6 回答 6

4

Cmrepair是一款出色的免费软件实用程序,可修复损坏的 .DBF 文件。

于 2008-08-13T20:34:58.887 回答
1

在 470,000 条记录时,您可能需要检查是否接近 FoxPro 表大小的 2 GB 限制。据我了解,记录仍然可以在那里,但在 2 gig 点之后变得无法访问。

于 2008-08-14T15:28:39.280 回答
1

您是否尝试过编写一个仅将现有数据复制到新表的小程序?

还,

http://fox.wikis.com/wc.dll?Wiki~TableCorruptionRepairTools~VFP

于 2008-08-13T19:58:04.047 回答
1

我的公司使用 Foxpro 来存储相当多的数据...根据我的经验,数据损坏非常明显,表首先无法打开。你有 foxpro 的副本来打开表吗?

于 2008-08-14T01:10:07.053 回答
0

@槊:

如果您有权访问 Visual FoxPro 命令行窗口,请键入:

SET TABLEVALIDATE 11
USE "YourTable" EXCLUSIVE    && If the table is damaged VFP must display an error here
PACK    && To reindex the table and deleted "marked" records
PACK MEMO    && If you have memo fields

完成后,表的结构必须有效,如果您想查看包含无效数据的字段,您可以尝试:

SELECT * FROM YourTable WHERE EMPTY(YourField)   && All records with YourField empty
SELECT * FROM YourTable WHERE LEN(YourMemoField) > 200   && All records with a long memo field, there can be corrupted data

等等

于 2008-08-14T12:39:24.643 回答
0

免费使用我的网站 (www.shershahsoft.com) 上的修复数据库(并且永远免费)。

我设计了这个程序来修复损坏的 Foxpro/FoxBase/Dbase 文件。该程序非常快。它将在不到一分钟的时间内修复 1 GB 表。

您可以将文件和文件夹分配给程序。当您启动程序时,它将标记所有损坏的文件,并通过单击修复或检查并修复按钮,它将修复所有损坏的文件。此外,它将在实际数据所在的文件夹中创建一个文件夹“CorruptData”,并将损坏文件的副本保存在那里。

要记住的一件事是,始终在存储文件的驱动器上运行 Windows CheckDsk。原因,当正在将记录复制到表中并且发生电源故障时,存在丢失的簇,Windows 在 CheckDsk 期间将其转换为文件。之后,RepairDatabases 将为您完成这项工作。

我使用过许多修复表格的付费和免费程序,但所有这些程序都会在表格中留下带有 embigit 字符的额外记录(而且它们也很耗时)。程序员需要手动查找和删除此类记录。但是,Repair Databases 实际上恢复了原始记录,您无需进一步操作。您需要的唯一操作是重新索引文件。

在修复过程中,有时会出现文件打开对话框,要求为具有索引的表定位紧凑索引文件。您可以在此时单击取消对话框,该表将被修复,但是,您稍后需要重新索引文件。(此对话框可能会出现多次,具体取决于损坏的索引数。)

于 2012-12-19T19:31:59.810 回答