У меня есть хранимая процедура, импортированная в EF4, и когда я вызываю ее с определенными параметрами через 30 секунд, она выдает ошибку тайм-аута. В профилировщике SQL Server я вижу вызов хранимой процедуры с правильными параметрами, занимающими чуть более 30 секунд, что является таймаутом в моем приложении.
ОДНАКО, когда я выполняю тот же SQL, отправленный профилировщику в Query Analyzer, он выполняет подсечку. Что может вызвать это несоответствие между вызовом из EF и вызовом из SQL Server Management Studio?
Полная трассировка стека .NET error ниже.
[SqlException (0x80131904): время ожидания истекло. Период ожидания прошедшее до завершения операции или на сервере, не отвечать на запросы.]
System.Data.SqlClient.SqlConnection.OnError(исключение SqlException, Boolean breakConnection) +2073486
System.Data.SqlClient.SqlInternalConnection.OnError(SqlException исключение, Boolean breakConnection) +5064444
System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning() +234
System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) +2275
System.Data.SqlClient.SqlDataReader.ConsumeMetaData() +33
System.Data.SqlClient.SqlDataReader.get_MetaData() +86
System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString) +311
System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async) +987
System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String метод, результат DbAsyncResult) +162
System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String метод) +32
System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior поведение, метод String) +141
System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior поведение) +12
System.Data.Common.DbCommand.ExecuteReader(поведение CommandBehavior) +10 System.Data.EntityClient.EntityCommandDefinition.ExecuteStoreCommands(EntityCommand entityCommand, поведение CommandBehavior) +443[EntityCommandExecutionException: ошибка при выполнении определение команды. Подробнее см. Внутреннее исключение.]
System.Data.EntityClient.EntityCommandDefinition.ExecuteStoreCommands(EntityCommand entityCommand, поведение CommandBehavior) +479
System.Data.Objects.ObjectContext.CreateFunctionObjectResult(EntityCommand entityCommand, EntitySet entitySet, EdmType edmType, MergeOption mergeOption) +182
System.Data.Objects.ObjectContext.ExecuteFunction(String functionName, Параметры MergeOption mergeOption, ObjectParameter []) +218
System.Data.Objects.ObjectContext.ExecuteFunction(String functionName, Параметры ObjectParameter []) +53
MetaView.DAL.MFCMData.MFCMDATAEntities.GetTradingOpenPositionCounterParty(Nullable1 positionDT, Nullable
1 tradingAccountID) в C:\Projects\ДЕНЕЖНЫХ\Web\MetaView\MetaView.DAL.MFCMData\MFCMData.Designer.cs: 7064 MetaView.BusinessLayer.Shared.Accounts.CounterParties.GetCounterParties(Int32 tradingAccountID) в C:\Projects\ДЕНЕЖНЫХ\Web\MetaView\MetaView.BusinessLayer\Shared\Accounts\CounterParties.cs: 161