Error Timeout

Signaler
Messages postés
5
Date d'inscription
mardi 6 novembre 2007
Statut
Membre
Dernière intervention
8 novembre 2007
-
Messages postés
5
Date d'inscription
mardi 6 novembre 2007
Statut
Membre
Dernière intervention
8 novembre 2007
-
Bonjour à tous,


j'ai une application développée en ASP.NET avec une base SQL Server 2003.

Au chargement d'une de mes pages j'obtiens l'erreur suivante:

Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding.


Description: An unhandled exception occurred during the execution of
the current web request. Please review the stack trace for more
information about the error and where it originated in the code.


Exception Details: System.Data.SqlClient.SqlException: Timeout expired.
The timeout period elapsed prior to completion of the operation or the
server is not responding.


J'ai déjà parcouru quelques forums pour trouver le moyen d'augmenter le
timeout et j'ai déjà essayé ça: (ajouté dans le web.config)


<sessionState sqlCommandTimeout = "3600" timeout="60" />

<httpRuntime maxRequestLength="1048576" executionTimeout="3600"/>


mais je n'ai toujours pas trouvé de réponse à mon problème.


la page en question dispose d'un gridview qui est rempli grace à une
stored procedure. j'ai bien l'impression que c'est l'exécution de la
stored proc qui pose problème.


Alors si vous avez une idée, n'hésitez pas.


merci d'avance

8 réponses

Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
28
Bonjour,

c'est une SqlException, le timeout est donc au niveau SQL, le problème se trouve donc pour accéder à sql server. Le pb vient donc d'une mauvaise IP, d'un part-feu qui block le traffic, d'un mauvais login/pass, que sql n'autorise pas les remote connections, ...

<hr />Cyril - MSP - MCPD ASP.net & MCTS SQL - Consultant indépendant
Messages postés
5
Date d'inscription
mardi 6 novembre 2007
Statut
Membre
Dernière intervention
8 novembre 2007

Bonjour Jesusonline,

j'ai vérifié l'accès à sql sever, il n'y a pas l'air d'avoir de problème de ce coté là.
j'ai lancé sql profiler pour voir ce que la procédure stockée ramenait.
voila ce que j'ai dans la trace:

Event Class          TextData          ...  CPU  Reads       Writes   Duration
RPC:Completed   Ma Store Proc ...  4454  1970401  300       30060
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
28
ah ?

bizarre car normalement l'erreur que tu as ca vient de l'accès à sql server ! T'es sur que le profiler te montre la bonne requête, essaye de te mettre en debug dans Visual Studio juste avant le executequery qui plante et regarde avec le profiler si la requete est bien passé. Sinon donne moi la ligne qui plante et le détail de l'exception (stack trace)

<hr />Cyril - MSP - MCPD ASP.net & MCTS SQL - Consultant indépendant
Messages postés
5
Date d'inscription
mardi 6 novembre 2007
Statut
Membre
Dernière intervention
8 novembre 2007

Il me mais pas la ligne qui plante. j'ai ça à la place:

Source Error:

An unhandled exception was generated during the execution of the
current web request. Information regarding the origin and location of the
exception can be identified using the exception stack trace below.


Voila déjà pour le Stack Trace:

Stack Trace:

[SqlException (0x80131904): Timeout expired.  The timeout period elapsed prior to completion of the operation or the server is not responding.]

System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection) +95
System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection) +82
System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj) +346
System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) +3244
System.Data.SqlClient.SqlDataReader.ConsumeMetaData() +52
System.Data.SqlClient.SqlDataReader.get_MetaData() +130
System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString) +371
System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async) +1121
System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result) +334
System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method) +45
System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method) +162
System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior) +35
System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior behavior) +32
System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) +183
System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) +308
System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, String srcTable) +152
System.Web.UI.WebControls.SqlDataSourceView.ExecuteSelect(DataSourceSelectArguments arguments) +2864
System.Web.UI.DataSourceView.Select(DataSourceSelectArguments arguments, DataSourceViewSelectCallback callback) +84
System.Web.UI.WebControls.DataBoundControl.PerformSelect() +153
System.Web.UI.WebControls.BaseDataBoundControl.DataBind() +99
System.Web.UI.WebControls.GridView.DataBind() +23
System.Web.UI.WebControls.BaseDataBoundControl.EnsureDataBound() +92
System.Web.UI.WebControls.CompositeDataBoundControl.CreateChildControls() +100
System.Web.UI.Control.EnsureChildControls() +134
System.Web.UI.Control.PreRenderRecursiveInternal() +109
System.Web.UI.Control.PreRenderRecursiveInternal() +233
System.Web.UI.Control.PreRenderRecursiveInternal() +233
System.Web.UI.Control.PreRenderRecursiveInternal() +233
System.Web.UI.Control.PreRenderRecursiveInternal() +233
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +4435
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
28
Arf tu utilises un sqldatasource :-/

Essaye de faire une page "classique" qui se connecte dans la base de données ou pointent le sql datasource.

La requete dans SQL profiler est bien celle qu'est censé executé le sqldatasource ?

Le problème ne vient pas de la connexion mais d'un timeout dans la requete SQL, récupere la requete qu'est censé joué le sqldatasource et lance le dans sql management et regarde le temps que cela prend. Il te manque peut etre un index ou alors une connexion (si tu retournes quelques millions de lignes ... :p)

<hr />Cyril - MSP - MCPD ASP.net & MCTS SQL - Consultant indépendant
Messages postés
5
Date d'inscription
mardi 6 novembre 2007
Statut
Membre
Dernière intervention
8 novembre 2007

La procédure stockée que je retrouve dans SQL profiler, c'est bien celle qui est exécuté par le sqldatasource.

Dans le Sql management la procédure stockée me retourne 50 lignes en 11 secondes.
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
28
11 secondes pour 50 lignes ???

vérifie les index et la requête, c'est beaucoup trop.

Pour augmenter le timeout d'une connexion sql ca se joue au niveau du web.config et de l'objet sqlconnection ...  avec un sqldatasource il doit y avoir une propriété je supose (j'utilise pas ce truc là)

<hr />Cyril - MSP - MCPD ASP.net & MCTS SQL - Consultant indépendant
Messages postés
5
Date d'inscription
mardi 6 novembre 2007
Statut
Membre
Dernière intervention
8 novembre 2007

Bon alors j'ai créé une page classique avec juste le sqldatasource qui pointent vers la base avec le gridview.
J'ai toujours l'erreur de timeout.
Par contre quand je configure mon sqldatasource, on a la possibilité de tester la requête. je l'ai testé avec les paramètres par défaut et sa me retourne bien les valeurs que je devrais avoir.