【问题标题】:SSIS ERROR : System.Data.Odbc.OdbcException: ERROR [08S01] [DataDirect][ODBC Progress OpenEdge Wire Protocol driver]Socket closedSSIS 错误:System.Data.Odbc.OdbcException:错误 [08S01] [DataDirect][ODBC 进度 OpenEdge 有线协议驱动程序]套接字已关闭
【发布时间】:2014-12-10 11:38:29
【问题描述】:

我有一个严重的问题,即少数源表的连接不稳定。 在连接管理器中登录成功,当我打开 ADO.NET 源代码编辑器时,我可以预览前 200 行,当我使用构建查询显示所有行时,它工作(非常缓慢)。

当我使用调试按钮执行包时,在错误情况下我可以看到:

1/ ADO.NET Source 为红色,Destination 为绿色(行数未完全加载到目标表中)

2/ 红色的 ADO.NET 源和未着色的目标(已加载 0 行)

错误信息:

    Source Facture [1]] Erreur : « System.Data.Odbc.OdbcException: ERROR [08S01] [DataDirect][ODBC Progress OpenEdge Wire Protocol driver]Socket closed.
   à System.Data.Odbc.OdbcConnection.HandleError(OdbcHandle hrHandle, RetCode retcode)
   à System.Data.Odbc.OdbcConnectionHandle..ctor(OdbcConnection connection, OdbcConnectionString constr, OdbcEnvironmentHandle environmentHandle)
   à System.Data.Odbc.OdbcConnectionOpen..ctor(OdbcConnection outerConnection, OdbcConnectionString connectionOptions)
   à System.Data.Odbc.OdbcConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningObject)
   à System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection owningConnection, DbConnectionPoolGroup poolGroup)
   à System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection)
   à System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)
   à System.Data.Odbc.OdbcConnection.Open()
   à Microsoft.SqlServer.Dts.Runtime.ManagedHelper.GetManagedConnection(String assemblyQualifiedName, String connStr, Object transaction)
   à Microsoft.SqlServer.Dts.Runtime.Wrapper.IDTSConnectionManager100.AcquireConnection(Object pTransaction)
   à Microsoft.SqlServer.Dts.Pipeline.DataReaderSourceAdapter.AcquireConnections(Object transaction)
   à Microsoft.SqlServer.Dts.Pipeline.ManagedComponentHost.HostAcquireConnections(IDTSManagedComponentWrapper100 wrapper, Object transaction) »

我认为这与超时有关,如果我可以更改超时以提供更多时间从源表加载数据。

【问题讨论】:

  • 您也可以尝试在 Progress Software Communities 论坛中发布此问题:ow.ly/FKJuy 这些论坛由工程师和产品经理监控,因此您可以获得一些相关的反馈,因为它与产品。

标签: ssis sql-server-2008-r2 odbc openedge progress-db


【解决方案1】:

在执行 SSIS 任务时,我在使用 OpenEdge ODBC 驱动程序时遇到了类似的问题。错误消息类似于对连接管理器的 AcquireConnection 方法调用失败。很多谷歌搜索但没有帮助。 最后发现,OE 的 ODBC 驱动程序无法处理数据流的并行执行。一旦我将它们划分为单独的控制流任务,事情就开始起作用了。希望这可以帮助某人。 :)

【讨论】:

    【解决方案2】:

    你提到了 SSIS。您是否将这些查询作为传递查询运行?你可能应该是。

    另外两件经常让 ODBC 客户端访问 OpenEdge 数据库的事情是:

    1) 未能运行 UPDATE STATISTICS。使用 OpenEdge 数据库的应用程序通常是 4GL 应用程序。 4GL 查询优化器是一个基于编译时规则的优化器。 SQL-92 引擎(ODBC 使用)是基于成本的优化器。很多时候 SQL 的使用是事后才想到的,管理员(如果有的话)没有意识到需要运行统计信息以便为优化器提供数据以便有效地运行查询。如果没有任何统计信息,性能通常会很差,因为即使是微不足道的查询也会变成表扫描。

    http://knowledgebase.progress.com/articles/Article/20992

    2) 您发布的错误消息似乎与此无关,但您可能还需要运行 dbtool 来调整字段宽度(OpenEdge 字段都是可变宽度并且可以过度填充——这使 SQL 客户端适合。 )

    http://knowledgebase.progress.com/articles/Article/P24496

    【讨论】:

      猜你喜欢
      • 2021-10-05
      • 1970-01-01
      • 2018-01-22
      • 2011-11-12
      • 1970-01-01
      • 1970-01-01
      • 2019-07-02
      • 1970-01-01
      • 2023-03-31
      相关资源
      最近更新 更多