在 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 文章,但我真的不知道在哪里更改这个 属性:
- The Significance of Cursor Location
- The Microsoft Cursor Service for OLE DB
- Recordset Object (ADO)
- CursorLocation Property (ADO)
更新 1 - OLE DB 服务
尝试使用 OLEDB 连接管理器中的 OLEDB Services
值:
也请参考以下文章尝试手动更改连接字符串中的 OLEDB 服务值:
更新 2 - 其他供应商
尝试使用其他提供程序连接到 Sybase,例如 Sybase Adaptive Server Enterprise Data Provider 或 ODBC,有许多链接描述整个过程:
所以我终于解决了这个问题,但不是用 OLE DB。相反,我使用 Advantage .NET Data Provider Release 11.1。然后在 Visual Studio 中,我使用了 ADO.NET 连接管理器,在那里我将提供者更改为 Advantage Data Provider 并且成功了。
我在使用 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 文章,但我真的不知道在哪里更改这个 属性:
- The Significance of Cursor Location
- The Microsoft Cursor Service for OLE DB
- Recordset Object (ADO)
- CursorLocation Property (ADO)
更新 1 - OLE DB 服务
尝试使用 OLEDB 连接管理器中的 OLEDB Services
值:
也请参考以下文章尝试手动更改连接字符串中的 OLEDB 服务值:
更新 2 - 其他供应商
尝试使用其他提供程序连接到 Sybase,例如 Sybase Adaptive Server Enterprise Data Provider 或 ODBC,有许多链接描述整个过程:
所以我终于解决了这个问题,但不是用 OLE DB。相反,我使用 Advantage .NET Data Provider Release 11.1。然后在 Visual Studio 中,我使用了 ADO.NET 连接管理器,在那里我将提供者更改为 Advantage Data Provider 并且成功了。