SSIS错误:System.Data.Odbc.OdbcException:错误[08S01] [DataDirect] [ODBC进度OpenEdge线协议驱动程序]套接字已关闭

时间:2014-12-10 11:38:30

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

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

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

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

2 / ADO.NET Source为红色,目标为uncolored(已加载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) »

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

你提到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