Mam procedurę składowaną, którą wywołuję przy użyciu LinqToSQL. Nie robię nic specjalnego, np.Czas oczekiwania na procedurę przechowywania Linq, ale SSMS Szybki
MyDataContext db = new MyDataContext()
var results = db.storedProcedure(param1, param2, param3)
// Do stuff
Po uruchomieniu procedury przechowywanej przy użyciu dokładnie tych samych parametrów uzyskuję wyniki od 2 do 6 sekund. Baza danych to zdalna baza danych.
Jednak po uruchomieniu procedura przechowywana trwa (po debugowaniu ....) 275 sekund! W normalnych warunkach daje następujące wyjątki:
[Win32Exception (0x80004005) Operacja oczekiwania dokładnego Out]
[SQLException (0x80131904) upłynął limit czasu. Limit czasu, który upłynął przed zakończeniem operacji lub serwer nie odpowiada.] System.Data.SqlClient.SqlConnection.OnError (wyjątek SqlException, połączenie Boolean breakConnection, działanie
1 wrapCloseInAction) +1753346 System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action
1 wrapCloseInAction) +5295154 System.Data.SqlClient.TdsParser .ThrowExceptionAndWarning (TdsParserStateObject stateObj, logiczna callerHasConnectionLock, logiczna asyncClose) +242 System.Data.SqlClient.TdsParser.TryRun (runBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader datastream BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, logiczna & DATAREADY) +1682 System.Data .SqlClient.SqlDataReader.TryConsumeMetaData() +59 System.Data.SqlClient.SqlDataReader.get_MetaData() +90 System.Data.SqlClient.SqlCommand.Finish ExecuteReader (SqlDataReader DS, RunBehavior runBehavior, String resetOptionsString) +365 System.Data.SqlClient.SqlCommand.RunExecuteReaderTds (CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean asynchroniczny, Timeout Int32, Zadanie & zadaniowe, Boolean asyncWrite) +1325 systemowe .Data.SqlClient.SqlCommand.RunExecuteReader (CommandBehavior cmdBehavior, RunBehavior runBehavior, logiczna returnStream metoda String realizacji TaskCompletionSource`1, przekroczenie czasu Int32, zadanie & zadanie logiczna asyncWrite) +175 System.Data.SqlClient.SqlCommand.RunExecuteReader (CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, metoda String) +53 System.Data.SqlClient.SqlCommand.ExecuteReader (zachowanie CommandBehavior, metoda String) +134 System.Data.SqlClie nt.SqlCommand.ExecuteDbDataReader (zachowanie CommandBehavior) +41 System.Data.Common.DbCommand.ExecuteReader() +12 System.Data.Linq.SqlClient.SqlProvider.Execute (zapytanie Express, QueryInfo queryInfo, fabryka IObjectReaderFactory, Object [] parentArgs, Object [] userArgs, ICompiledSubQuery [] subQueries, Object lastResult) +1306 System.Data.Linq.SqlClient.SqlProvider.ExecuteAll (zapytanie Express, QueryInfo [] queryInfos, fabryka IObjectReaderFactory, Object [] userArguments, ICompiledSubQuery [] subQueries) +118 System.Data.Linq.SqlClient.SqlProvider.System.Data.Linq.Provider.IProvider.Execute (zapytanie Expression) +342 System.Data.Linq.DataContext.ExecuteMethodCall (Obiekt instancji, MethodInfo methodInfo, Object [] parametry) +83
Wszystkie inne procedury przechowywane są wywoływane w ten sam sposób, ale żaden z nich nie ma tego problemu. Zdalny administrator DB twierdzi, że widzi rozpoczęcie i zakończenie połączenia przed upływem limitu czasu, więc wydaje się, że ma to coś wspólnego z krokami, w których Linq otrzymuje dane.
Czy ktoś już wcześniej tego doświadczył i pomysły na jego rozwiązanie?
Próbowałem usunąć SP z pliku dmbl i ponownie go dodać.Zauważyła zmianę jednej z wartości z dziesiętnej na podwójną, ale poza tym jest taka sama.
Jak zwykle wczoraj działało dobrze!
Z góry dziękuję.