巨大な .accdb ファイル (約 550,000 行) を読み取ろうとする従来の ASP.NET アプリケーションをデバッグします。次のようにコードします。
OleDbConnection sourceConnection = new OleDbConnection(
"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + destinationFile);
OleDbDataAdapter sourceAdapter = new OleDbDataAdapter("select * from [" + tableName + "]", sourceConnection);
DataSet sourceDataSet = new DataSet();
try
{
sourceConnection.Open();
sourceAdapter.AcceptChangesDuringFill = false;
sourceAdapter.Fill(sourceDataSet, tableName);
}
catch (Exception ex)
{
_trace.TraceEvent(TraceEventType.Error, 0, ex.Message);
}
finally
{
sourceConnection.Close();
}
ある時点で例外が発生しました:
「トランスポート接続からデータを読み取れません: 既存の接続がリモート ホストによって強制的に閉じられました」
Server stack trace:
at System.ServiceModel.Channels.HttpChannelUtilities.ProcessGetResponseWebException(WebException webException, HttpWebRequest request, HttpAbortReason abortReason)
at System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelRequest.WaitForReply(TimeSpan timeout)
at System.ServiceModel.Channels.RequestChannel.Request(Message message, TimeSpan timeout)
at System.ServiceModel.Channels.ClientReliableChannelBinder`1.RequestClientReliableChannelBinder`1.OnRequest(TRequestChannel channel, Message message, TimeSpan timeout, MaskingMode maskingMode)
at System.ServiceModel.Channels.ClientReliableChannelBinder`1.Request(Message message, TimeSpan timeout, MaskingMode maskingMode)
at System.ServiceModel.Channels.ClientReliableChannelBinder`1.Request(Message message, TimeSpan timeout)
at System.ServiceModel.Security.SecuritySessionClientSettings`1.SecurityRequestSessionChannel.Request(Message message, TimeSpan timeout)
at System.ServiceModel.Dispatcher.RequestChannelBinder.Request(Message message, TimeSpan timeout)
at System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout)
at System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation)
at System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)
Exception rethrown at [0]:
at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
at Access2010.IAccessService.LoadFromMDB(String destinationFile, String tableName)
at Access2010.AccessService.LoadFromMDB(String destinationFile, String tableName)
それが何であるか、そしてそれを修正する方法を誰かが知っていますか? SQLクエリを書き直して小さなチャンクでデータを取得するのが最善の選択であることを理解しています。