我在存储过程执行时随机收到以下错误消息。似乎SQL连接超时尝试导出过程的参数。这个问题昨天早上7点开始(在我们的生产系统上)。当天/前一天晚上没有环境变化。在Azure中运行服务器。我们将连接/命令超时扩展到60秒。仍然会发生。
存储过程“{nameOfProc}”不存在。在System.Data.SqlClient.SqlCommandBuilder.DeriveParameters(SqlCommand命令)
这是堆栈跟踪:
System.IndexOutOfRangeException:PARAMETER_NAME
at System.Data.SqlClient.SqlDataReader.GetOrdinal(String name) at System.Data.SqlClient.SqlDataReader.get_Item(String name) 在System.Data.SqlClient.SqlCommand.DeriveParameters() 在System.Data.SqlClient.SqlCommandBuilder.DeriveParameters(SqlCommand命令) at SQLDataAccess.Data.SQLDataAccess.FillDataSet(String strCommandText,SortedList slParameters,Int32 intMaxRowsReturned,Int32 intStartRecord,String strDataSetTableName,int32 intCommandTimeOut,DataSet& dsResults,DataSet& dsMessage)System.Data.SqlClient.SqlException(0x80131904):超时已过期。操作完成之前经过的超时时间或服务器没有响应。 ---> System.ComponentModel.Win32Exception(0x80004005):等待操作超时
在System.Data.SqlClient.SqlConnection.OnError(SqlException异常,Boolean breakConnection,Action'1 wrapCloseInAction) 在System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj,Boolean callerHasConnectionLock,Boolean asyncClose) 在System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior,SqlCommand cmdHandler,SqlDataReader dataStream,BulkCopySimpleResultSet bulkCopyHandler,TdsParserStateObject stateObj,Boolean& dataReady) 在System.Data.SqlClient.SqlDataReader.TryConsumeMetaData() 在System.Data.SqlClient.SqlDataReader.get_MetaData() 在System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds,RunBehavior runBehavior,String resetOptionsString) 在System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior,RunBehavior runBehavior,Boolean returnStream,Boolean async,Int32 timeout,Task& task,Boolean asyncWrite,SqlDataReader ds) 在System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior,RunBehavior runBehavior,Boolean returnStream,String方法,TaskCompletionSource`1完成,Int32超时,任务和任务,布尔asyncWrite) 在System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior,RunBehavior runBehavior,Boolean returnStream,String method) 在System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior,String method) 在System.Data.SqlClient.SqlCommand.ExecuteReader() 在System.Data.SqlClient.SqlCommand.DeriveParameters() 在System.Data.SqlClient.SqlCommandBuilder.DeriveParameters(SqlCommand命令) at SQLDataAccess.Data.SQLDataAccess.FillDataSet(String strCommandText,SortedList slParameters,Int32 intMaxRowsReturned,Int32 intStartRecord,String strDataSetTableName,int32 intCommandTimeOut,DataSet& dsResults,DataSet& dsMessage) ClientConnectionId:23d567df-9bc6-49e6-aa7e-ac1dfb81a0b7 错误号:-2,状态:0,类:11
System.InvalidOperationException: There is already an open DataReader associated with this Command which must be closed first.
at System.Data.SqlClient.SqlInternalConnectionTds.ValidateConnectionForExecute(SqlCommand command)
at System.Data.SqlClient.SqlCommand.ValidateCommand(String method, Boolean async)
at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource`1 completion, Int32 timeout, Task& task, Boolean asyncWrite)
at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)
at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method)
at System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior)
at System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior behavior)
at System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
at System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
at System.Data.Common.DbDataAdapter.Fill(DataSet dataSet)
at SQLDataAccess.Data.SQLDataAccess.FillDataSet(String strCommandText, SortedList slParameters, Int32 intMaxRowsReturned, Int32 intStartRecord, String strDataSetTableName, Int32 intCommandTimeOut, DataSet& dsResults, DataSet& dsMessage)
任何帮助将不胜感激!
尼克