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

时间:2019-02-05 13:44:22

标签: ssis oledb etl sybase advantage-database-server

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

  

提供程序无法从命令中获取参数信息。   使用SetParameterInfo。 (优势OLE DB提供程序)

我没有使用任何参数,我的数据访问模式设置为“表”或“视图”(请参阅​​随附的屏幕截图)

enter image description here

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

我想念什么?谢谢!!

2 个答案:

答案 0 :(得分:2)

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

标题:

  

“提供程序无法从命令中派生参数信息。请使用SetParameterInfo”。 与OLE DB一起使用客户端游标时发生

问题描述:

  

在将CursorLocation设置为与Advantage OLE DB提供程序一起使用客户端时,会出现“提供程序无法从命令中获取参数信息。Use SetParameterInfo”的情况。

解决方案:

  

这是Advantage OLE DB提供程序的1.0版本中的一个已知问题,并且由Advantage R&D团队进行研究。 Advantage OLE DB提供程序的1.1版本应解决此问题。同时,将CursorLocation设置为使用服务器端游标作为解决方法。服务器端游标可与Advantage Database Server和Advantage Local Server一起使用。


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

我还找到了一些有关CursorLocation属性的Microsoft官方文章,但实际上我不知道在哪里更改此属性:


更新1-OLE DB服务

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

enter image description here

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


更新2-其他提供商

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

答案 1 :(得分:0)

所以我终于解决了这个问题,但是没有使用OLE DB。相反,我使用了Advantage .NET数据提供程序11.1版。然后在Visual Studio中,我使用了ADO.NET连接管理器,在该管理器中,我将提供程序更改为Advantage Data Provider,从而达到了目的。