Comment puis-je augmenter le délai d'attente de mon appel de procédure stockée (voir erreur)?
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.
Source Error:
Line 91:
Line 92: DataSet getData;
Line 93: getData = SqlHelper.ExecuteDataset(ConfigurationManager.ConnectionStrings["connstr"].ConnectionString, CommandType.StoredProcedure, "Course_NewReportGet_Get_Sav", objPara);
Line 94:
Line 95: foreach (DataRow dr in getData.Tables[0].Rows)
Source File: c:\Users\Ryan\bancroft archive\santiago\santiago code\trunk\admin\tools\Optimus.aspx.cs Line: 93
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) +1950890
System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection) +4846875
System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj) +194
System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) +2392
System.Data.SqlClient.SqlDataReader.ConsumeMetaData() +33
System.Data.SqlClient.SqlDataReader.get_MetaData() +83
System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString) +297
System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async) +954
System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result) +162
System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method) +32
System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method) +141
System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior) +12
System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior behavior) +10
System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) +130
System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) +287
System.Data.Common.DbDataAdapter.Fill(DataSet dataSet) +94
Mexico.Data.SqlHelper.ExecuteDataset(SqlConnection connection, CommandType commandType, String commandText, SqlParameter[] commandParameters) +149
Mexico.Data.SqlHelper.ExecuteDataset(String connectionString, CommandType commandType, String commandText, SqlParameter[] commandParameters) +93
admin_tools_Optimus.GetUsers() in c:\Users\Ryan\bancroft archive\santiago\santiago code\trunk\admin\tools\Optimus.aspx.cs:93
admin_tools_Optimus.GetCompanies() in c:\Users\Ryan\bancroft archive\santiago\santiago code\trunk\admin\tools\Optimus.aspx.cs:75
admin_tools_Optimus.Proceed(Object sender, EventArgs e) in c:\Users\Ryan\bancroft archive\santiago\santiago code\trunk\admin\tools\Optimus.aspx.cs:43
System.Web.UI.WebControls.Button.OnClick(EventArgs e) +111
System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +110
System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +10
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +36
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1565
source d'informationauteur BigOmega
Vous devez vous connecter pour publier un commentaire.
Peut-être que cela ne s'applique pas, mais je pense qu'il devrait être mentionné pas moins. La valeur par défaut CommandTimeOut est de 30 secondes. Cela devrait être beaucoup de temps pour toutes les actions qui se passent dans 99,9% des cas d'une application web. Sauf si vous êtes absolument sûr que l'action devrait prendre plus de temps que cela, vous devriez passer votre temps à essayer d'optimiser les requêtes sql afin qu'elle retourne dans <30 secondes. Une bonne indexation est un bon endroit pour commencer.
Vous pouvez augmenter le délai d'expiration de la période de la commande par le réglage de la SqlCommand.CommandTimeout propriété.
Puis l'ajouter dans la chaîne de connexion:
+1 à Al parce que 30 secondes devrait être beaucoup. Faire de la période de délai d'attente plus long est vraiment seulement un pansement sur le problème sous-jacent.
Dans mon expérience, la procédure stockée est trop cher 90% du temps. Quand j'étais à l'examen de ces erreurs dernière, j'ai eu une règle générale qu'aucune procédure stockée coût de plus de 1.00. Le plus cher qu'ils sont, le plus grand est le risque que nous avions de blocage et de génération de ces exceptions.
utilisés pour la requête n'était pas du tout optimisé pour la quantité de données. Dans notre cas, nous avons purgé les données non utilisées, mais une meilleure option devrait être l'optimisation de la requête ou d'avoir un coup d'oeil à l'entretien ménager. Après l'action nous n'avons pas reçu l'erreur plus. Bien sûr, cela dépend de la situation dans laquelle vous recevez ce message d'erreur si cette solution va vous aider.
Vous pouvez accomplir cela en ajoutant "Délai de connexion=90" à la chaîne de connexion. Si votre requête est de prendre plus de 30 secondes si vous devriez vraiment envisager l'optimisation de la requête en quelque sorte. Index peut être nécessaire d'ajouter ou d'un point de vue peut-être besoin d'être créé, etc.
Édité pour corriger problème signalé par @Stijn commentaires.