我们遇到了一个非常奇怪的问题,微软正试图提供帮助,但这需要很长时间,而且很少有比我更聪明的大脑也无法指出......所以“你是我唯一的希望!” 我们使用 Data Factory V2 将数据从本地(即我们的网络内部)的 Oracle 服务器复制到 Azure SQL 数据库。作为一个通过内部/互联网的连接,按照微软的说法是通过自托管集成运行时。所以我们在本地设置了 4 个 WinSvr2016 虚拟机,在每个虚拟机上安装了 SHIR 客户端版本 5.10.7918.2,注册,使用 Oracle 连接创建链接服务,为源和接收器,管道等创建数据集。它工作了几个月,数据中,速度不错,一切都好。直到没有!上周四,我们再次打开这些管道以运行另一个提取,按照之前的数百次和 BOOM,什么都没有,
Error code 9603, Details: ERROR [08S01] [Microsoft][ODBC Oracle Wire Protocol driver]Socket closed. ERROR [08001] [Microsoft][ODBC Oracle Wire Protocol driver][Oracle]Connection Dead.
而已!在 SHIR 日志上,我可以看到一个类似的错误,更详细但仍然不是很有帮助:
TraceComponentId: QueryTask
TraceMessageId: QueryRuntimeTestConnectionV2Exception
@logId: Error
FunctionName: TestConnection
jobId: 00000000-0000-0000-0000-000000000000
activityId: 390a17f1-d1f3-4ceb-b38a-11e4e51e3009
eventId: QueryRuntimeTestConnectionV2Exception
message: TestConnection failed, error message: 'Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,Message=ERROR [08S01] [Microsoft][ODBC Oracle Wire Protocol driver]Socket closed.
ERROR [08001] [Microsoft][ODBC Oracle Wire Protocol driver][Oracle]Connection Dead.,Source=Microsoft.DataTransfer.ClientLibrary.Odbc.OdbcConnector,StackTrace= at Microsoft.DataTransfer.ClientLibrary.Odbc.OdbcConnector.OdbcSourceUtilities.OpenOdbcConnection(IOdbcConnection connection, Int32 maxRetryAttempts, Boolean needWrapOdbcException, TimeSpan connectionTimeout) at Microsoft.DataTransfer.Runtime.OdbcConnectorValidator.TestConnection()
at Microsoft.DataTransfer.TransferTask.InteractiveTaskFactoryV2.ConnectorTestConnection(ConnectionSetting connectionSetting, TestConnectionV2Response response)
at Microsoft.DataTransfer.TransferTask.InteractiveTaskFactoryV2.TestConnection(TestConnectionV2Request request, TestConnectionV2Response response, CancellationToken token)
at Microsoft.DataTransfer.TransferTask.InteractiveTask`2.Execute(),''Type=Microsoft.DataTransfer.ClientLibrary.Odbc.Interop.OdbcException,Message=ERROR [08S01] [Microsoft][ODBC Oracle Wire Protocol driver]Socket closed.
ERROR [08001] [Microsoft][ODBC Oracle Wire Protocol driver][Oracle]Connection Dead.,Source=Microsoft.DataTransfer.ClientLibrary.Odbc.Wrapper,StackTrace= at Microsoft.DataTransfer.ClientLibrary.Odbc.Api.OdbcConnection.Open()
at Microsoft.DataTransfer.Common.Shared.HelperMethod.ExecuteWithTimeout(Action action, TimeSpan timeout, HybridDeliveryExceptionCode exceptionCode, String errorMessageFormat)
at Microsoft.DataTransfer.ClientLibrary.Odbc.OdbcConnector.OdbcSourceUtilities.OpenConnectionInternal(IOdbcConnection connection, TimeSpan connectionTimeout)
at Microsoft.DataTransfer.Common.RetryPolicies.RetryExtension.<>c__DisplayClass0_0.<ExecuteAction>b__0()
at Microsoft.DataTransfer.Common.RetryPolicies.RetryExtension.ExecuteAction[TResult](IRetry retry, Func`1 func)
at Microsoft.DataTransfer.ClientLibrary.Odbc.OdbcConnector.OdbcSourceUtilities.OpenOdbcConnection(IOdbcConnection connection, Int32 maxRetryAttempts, Boolean needWrapOdbcException, TimeSpan connectionTimeout),'.
现在,我们从连接开始,测试了 VNet 和防火墙、专用端点以及所有试图找出上周四可能发生的事情的爵士乐,因为没有人特别记得任何事情。一切似乎都很好,从 Azure 可以看到 SHIR 节点,我可以使用来自 SHIR 的相同凭据连接到 Oracle(客户端具有那个小型诊断实用程序)。更多,我设置了一个ODBCLinked Service 连接到同一个 Oracle 服务器,它工作正常,它工作正常 - 只是它太慢而且不那么智能(没有模式、没有分区等)它需要很长时间才能重新编写管道以使用 ODBC 和经过测试,它比本地 Oracle 链接服务慢 20 倍!然后,我们将 SHIR 虚拟机更改为 WinSvr2019,将 SHIR 客户端更改为较旧的客户端,在 Azure 中移动 SHIR 虚拟机并从那里尝试,将它们移回并更改凭据、服务帐户等等。一切都是徒劳的,我们绝望地尝试的任何错误都是一样的:
Error code 9603, Details: ERROR [08S01] [Microsoft][ODBC Oracle Wire Protocol driver]Socket closed. ERROR [08001] [Microsoft][ODBC Oracle Wire Protocol driver][Oracle]Connection Dead."
这里有人见过吗?或者知道链中还有什么我们可能没有尝试过?感谢您的任何建议!干杯,丹格