0

我在使用 Azure 数据工厂中的复制活动从 AccessDB 复制数据时遇到问题。

该副本有时会起作用,并且在“休息”一段时间后似乎效果更好。

管道的初始错误运行:

ErrorCode=UserErrorFailedToConnectOdbcSource,'Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,Message=,Source=Microsoft.DataTransfer.Runtime.GenericOdbcConnectors,''Type=System.Data.Odbc.OdbcException,Message=,Source=,'

从发生此错误时开始深入研究 IR 日志,有很多信息,但具体来说,日志中也存在此错误:

 TraceComponentId: TransferTask
TraceMessageId: TransferRunFailed
@logId: Error
FunctionName: Execute
jobId: cb6df474-ff8a-13a0-1d17-6e7f3baf5f8e
activityId: 1db37d81-cd32-4b6f-8d16-7fcf63ddea35
eventId: TransferRunFailed
message: Copy failed with error: 'Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,Message=,Source=Microsoft.DataTransfer.Runtime.GenericOdbcConnectors,StackTrace=   at Microsoft.DataTransfer.Runtime.GenericOdbc.GenericOdbcConnection.Open()
   at Microsoft.DataTransfer.Runtime.SourceStageProcessor`1..ctor(PluginRegistration plugins, IDictionary`2 stageProperties, Func`2 hookTelemetry)
   at Microsoft.DataTransfer.Runtime.PipelineDefinitionBuilder.CreateTabularSourceProcessor(IDictionary`2 properties)
   at Microsoft.DataTransfer.Runtime.PipelineProcessStage`3.CreateProcessor(Func`1 createNextProcessor)
   at Microsoft.DataTransfer.TransferTask.CopyTask.DoCopy()
   at Microsoft.DataTransfer.TransferTask.CopyTaskBase.Execute(),''Type=System.Data.Odbc.OdbcException,Message=,Source=,StackTrace=   at System.Data.Odbc.OdbcConnection.HandleError(OdbcHandle hrHandle, RetCode retcode)
   at System.Data.Odbc.OdbcConnectionOpen..ctor(OdbcConnection outerConnection, OdbcConnectionString connectionOptions)
   at System.Data.Odbc.OdbcConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningObject)
   at System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection owningConnection, DbConnectionPoolGroup poolGroup, DbConnectionOptions userOptions)
   at System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection)
   at System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions)
   at System.Data.ProviderBase.DbConnectionInternal.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)
   at System.Data.Odbc.OdbcConnection.Open()
   at Microsoft.DataTransfer.Common.Shared.HelperMethod.ExecuteWithTimeout(Action action, TimeSpan timeout, HybridDeliveryExceptionCode exceptionCode, String errorMessageFormat)
   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.Runtime.GenericOdbc.GenericOdbcConnection.Open(),'

这有时确实有效,它是间歇性的,所以我倾向于像池大小错误这样的东西?但是,我不确定接下来要尝试什么 - 将尽快向 Microsoft 记录支持票。

4

1 回答 1

0

本杰明

既然你提到它在其他时间工作。它需要一段时间的冷却,需要一些时间才能再次工作。我假设有多个人/进程(例如连接到以前的 adf 实例)连接到数据库并达到阈值。

该属性称为 MaxLocksPerFile - 设置限制文件共享。

如果数字很低 - 您可能会遇到类似的行为。

您可以将此数字增加到更高的值并检查是否可以解决问题。

https://social.technet.microsoft.com/Forums/en-US/1e152f31-3b5e-424b-b6a1-2a1651a909be/how-to-update-the-maxlocksperfile-registry-for-microsoft-access-for-office- 365-64bit?forum=Office2016ITPro

于 2022-01-04T05:39:26.800 回答