21 messaggi dal 21 gennaio 2004
Salve
Ricevo questo errore e non riesco a venirne a capo. Mi potete dare una mano?

Timeout. Il tempo disponibile ? scaduto prima del completamento dell'operazione o il server non risponde.


Source:
---------------------
.Net SqlClient Data Provider


StackTrace:
---------------------
in System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)
in System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
in System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)
in System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
in System.Data.SqlClient.SqlDataReader.SetMetaData(_SqlMetaDataSet metaData, Boolean moreInfo)
in System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
in System.Data.SqlClient.SqlDataReader.ConsumeMetaData()
in System.Data.SqlClient.SqlDataReader.get_MetaData()
in System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)
in System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async)
in System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result)
in System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)
in System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method)
in System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior)
in System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior behavior)
in System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
in System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
in System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, String srcTable)
in _RicBGare2.PhysicalDataRead(String strCampoSort, String strSensoPage, Int32 nPage) in G:\webtaxus\Inetpub\TaxusNetV2\AREABANCADATI\RicBGare2.aspx.vb:riga 220
in _RicBGare2.UpdateDataView(String strCampoSort, String strSensoPage, Int32 nPage) in G:\webtaxus\Inetpub\TaxusNetV2\AREABANCADATI\RicBGare2.aspx.vb:riga 227


Procedura:
---------------------
UpdateDataView


Note:
---------------------
WHERE (gz_idstato IN(1) AND (NOT (gz_idreg IN (SELECT ae_idreg FROM dbo.tAnagRegEscl WHERE (ae_idanag = 149))))) AND ga_dtapub = '11/11/2010 0:0:0'


Vi ringrazio anticipatamente

arcifan
2.198 messaggi dal 30 novembre 2001
il problema è che dura troppo la procedura e quindi ti va in timeout, hai provato a fare un test della stessa direttamtente su sql per vedere quanto dura?
21 messaggi dal 21 gennaio 2004
No, non ho provato. Comunque Ti ringrazio per la risposta, non mastico molto di sql se puoi dare una dritta su come fare il test.........

Ti saluto

arcifan
2.198 messaggi dal 30 novembre 2001
esegui la stessa query in SSMS, cioè in sql server management studio e controlla quanto ci impiega, cmq a occhio il problema sta nella IN che in sql non è molto performante.
21 messaggi dal 21 gennaio 2004
Grazie per la dritta. Ho inviato la query ed ha impiegato 8 secondi. Invio anche il messaggio : (Righe interessate: 277007)

Ti saluto

arcifan
21 messaggi dal 21 gennaio 2004
Ciao chiccosimo

Hai ragione impiegano tantissimo tempo. Potresti indicarmi al posto dell'operatore 'In' cosa utilizzare?

Ti ringrazio

arcifan
2.198 messaggi dal 30 novembre 2001
di solito si può sostituire l'operatore IN facendo in modo che i valori della IN siano una lista separata da una virgola.
Questa lista tramite user function viene trasformata in una tabella e questa la si mette in join con la tabella originaria, cmq su questo link trovi tutte le info necessarie:
http://www.sommarskog.se/arrays-in-sql.html

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.