在 SSIS 中使用 OLE DB 从 Sybase 提取数据时出错

Error while extracting data from Sybase using OLE DB in SSIS

我在使用 SSIS (2017) 中的 Advantage 11 OLE DB Provider 从 Sybase 提取数据时遇到问题。 我可以连接到数据库,查看 table 列表,并且在选择 table 作为数据源时,我可以看到列。
但是,当我单击预览(或 运行 数据流任务)时,出现此错误:

The provider cannot derive parameter information from the command. Use SetParameterInfo. (Advantage OLE DB Provider)

我没有使用任何参数,我的数据访问模式设置为 Table 或查看(参见随附的屏幕截图)

在项目属性中,Run64bitRuntime 设置为 False

我错过了什么?谢谢!!

在搜索这个问题时,我发现了一个 old official reference that is related to advantage ole db provider release 1.0 (since 2000),他们提到:

标题:

"The Provider Cannot Derive Parameter Information From the Command. Use SetParameterInfo". Occurs When Using a Client Side Cursor with OLE DB

问题描述:

"The provider cannot derive parameter information from the command. Use SetParameterInfo" occurs when setting the CursorLocation to use a client-side with the Advantage OLE DB Provider.

解法:

This is a known issue in the 1.0 release of the Advantage OLE DB Provider, and is being looked into by the Advantage R&D team. The 1.1 release of the Advantage OLE DB Provider should have this problem fixed. Meanwhile, set the CursorLocation to use a server-side cursor as a work around. Server-side cursors work with the Advantage Database Server and the Advantage Local Server.


我搜索了如何将 CursorLocation 设置为服务器端,也许您必须在连接字符串中设置 Advantage Server Type 属性。我确实没有使用过这种类型的连接,但您可以参考以下文章以查看一些示例:

我还找到了一些关于 CursorLocation 属性 的官方 Microsoft 文章,但我真的不知道在哪里更改这个 属性:


更新 1 - OLE DB 服务

尝试使用 OLEDB 连接管理器中的 OLEDB Services 值:

也请参考以下文章尝试手动更改连接字符串中的 OLEDB 服务值:


更新 2 - 其他供应商

尝试使用其他提供程序连接到 Sybase,例如 Sybase Adaptive Server Enterprise Data ProviderODBC,有许多链接描述整个过程:

所以我终于解决了这个问题,但不是用 OLE DB。相反,我使用 Advantage .NET Data Provider Release 11.1。然后在 Visual Studio 中,我使用了 ADO.NET 连接管理器,在那里我将提供者更改为 Advantage Data Provider 并且成功了。