2

我正在尝试使用 SSIS 从 dBase 文件中加载一些数据。我从未使用过 dBase。这些文件由第三方应用程序创建。

数据库包含一张表,C:\dbf\exceptions.dbf

在 SSIS 中,我创建了一个Microsoft Jet 4.0 OLE DB ProviderC:\dbf作为文件名放入,放入dBASE III扩展属性(文件的第一个字节是根据this0x03表示 III )。连接测试正常。

然后我尝试使用该连接管理器添加一个 OLE DB 源。当我单击Name of the table or the view:下拉列表时,它会正确填充Exceptions为唯一的表。如果我选择它并点击预览,我会得到

Exception from HRESULT: 0xC02020E8
Error at ETL Exceptions [OLE DB Source [1]]: SSIS Error Code DTS_E_OLEDBERROR.  An OLE DB error has occurred. Error code: 0x80040E37.

Error at ETL Exceptions [OLE DB Source [1]]: Opening a rowset for "exceptions" failed. Check that the object exists in the database.

我可以exceptions.dbf在 DBF Viewer 2000 中打开文件而没有任何问题。

据我所知,不需要输入任何凭据(DBF Viewer 2000 不需要任何凭据,我可以毫无问题地更新行),但连接管理器坚持填写Admin用户名。

更新:根据 DBF Viewer 2000,文件类型是FoxBase+/dBASE III PLUSE, no memo

更新 2我尝试打开应用程序生成的其他一些表。有些打开,有些给出错误。

连接管理器

OLE DB 源

错误

4

3 回答 3

0

我找到了解决方法。通过将提供程序更改为Microsoft OLE DB Provider for Visual FoxPro,输入目录路径,并将其他所有内容保留为默认值,我现在可以打开表。我现在收到警告:

该组件报告了以下警告:

{FBAE0F44-DE41-4862-8C53-228C63D87A01} [OLE DB 源 [1]] 处的警告:无法从 OLE DB 提供程序检索列代码页信息。如果组件支持“DefaultCodePage”属性,则将使用该属性的代码页。如果当前字符串代码页值不正确,请更改属性值。如果组件不支持该属性,则将使用组件区域设置 ID 中的代码页。

如果要继续操作,请选择确定。

如果要停止操作,请选择取消。

这是完全可以接受的,因为我们都是关于 1252 的。

于 2013-10-17T16:54:31.527 回答
0

我在我的一个项目中遇到了同样的问题,我发现如果您的文件名超过 8 个字符而没有扩展名,那么您会收到此错误,将您的好名称更改为较短的名称,它会正常工作。

于 2016-01-12T21:01:05.030 回答
0

当我们在打开集中有不同的 excel 工作表名称时会出现此错误(当您选择该 excel 输入组件 -> 属性 -> 底端打开集时)。请从 excel 工作表名称中检查该名称。如果它有空格,那么它是不同的。因此,我们必须再次创建该 excel 连接管理器并将其重新映射到数据库组件。

谢谢!

于 2017-08-30T12:59:57.050 回答