我有一些SQL Server DTS包从FoxPro数据库导入数据。直到最近这个工作正常。现在,从其中一个FoxPro表导入数据的脚本会将大约470,000条记录炸入导入。我只是将数据拉入一个具有可空varchar字段的表中,所以我认为它必须是一个奇怪/损坏的数据问题。
您会使用哪些工具来追踪这样的问题?
仅供参考,这是我得到的错误:
源列1('field1')的数据不可用。您的提供商可能要求所有Blob列都位于源结果集中最右侧。
此表中不应包含任何blob列。
感谢您的建议。我不知道这是否是一个腐败问题。我刚开始从我的MSDN订阅下载FoxPro,所以我会看看是否可以打开表格。 SSRS打开表,它只是在运行所有记录之前窒息。我只想弄清楚哪个记录存在问题。
答案 0 :(得分:4)
Cmrepair是一个出色的免费软件,可以修复损坏的.DBF文件。
答案 1 :(得分:1)
答案 2 :(得分:1)
我公司使用Foxpro存储相当多的数据......根据我的经验,数据损坏非常明显,表格首先无法打开。你有一份foxpro打开桌子吗?
答案 3 :(得分:1)
在470,000条记录中,您可能需要检查是否接近FoxPro表大小的2千兆字节限制。根据我的理解,记录仍然可以存在,但在2 gig点之后变得无法访问。
答案 4 :(得分:0)
@Lance:
如果您有权访问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
等。
答案 5 :(得分:0)
免费使用我网站(www.shershahsoft.com)的修复数据库(并且永远免费)。
我设计了这个程序来修复损坏的Foxpro / FoxBase / Dbase文件。该计划非常快。它将在不到一分钟的时间内修复1 GB的表。
您可以将文件和文件夹设置为该程序。当您启动程序时,它将标记所有损坏的文件,通过单击“修复”或“检查并修复”按钮,它将修复所有损坏的文件。此外,它将在存在实际数据的文件夹中创建一个文件夹“CorruptData”,并将在那里保留损坏文件的副本。
要记住一件事,始终在存储文件的驱动器上运行Windows CheckDsk。原因是,当记录被复制到表中并且发生电源故障时,Windows中存在丢失的集群,这些集群在CheckDsk期间转换为文件。之后,RepairDatabases将为您完成工作。
我使用了许多付费和免费程序来修复表格,但是所有这些程序都会在带有embiguit字符的表格中留下额外的记录(而且它们也很耗时)。程序员需要手动查找和删除这些记录。但是修复数据库实际上恢复了原始记录,您无需进一步操作。您需要的唯一操作是重新索引文件。
在修复过程中,有时会出现“文件打开对话框”,要求找到带有indeces的表的紧凑索引文件。您可以单击取消该对话框,该表将被修复,但是,您需要稍后重新索引该文件。 (此对话框可能会出现多次,具体取决于损坏的indeces数量。)