2009-05-08 10 views
9
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 
+2

कनेक्शनटाइम संपत्ति केवल पढ़ने के लिए है। –

उत्तर

14

शायद यह लागू नहीं होता है, लेकिन मुझे लगता है कि इसका उल्लेख किसी भी कम नहीं होना चाहिए। डिफ़ॉल्ट कमांडटाइम 30 सेकंड है। 99.9% वेब एप्लिकेशन में होने वाली किसी भी कार्रवाई के लिए यह बहुत समय होना चाहिए। जब तक कि आप पूरी तरह से सुनिश्चित नहीं हैं कि कार्रवाई को उससे अधिक समय लेना चाहिए, आपको अपना समय एसक्यूएल को अनुकूलित करने की कोशिश करनी चाहिए ताकि यह < 30 सेकंड में लौट सके। इसके लिए शुरू करने के लिए उचित अनुक्रमण एक अच्छी जगह है।

+0

यह वास्तव में एक बार सौदा है, मैं डेटा का एक बड़ा रूपांतरण करने की कोशिश कर रहा हूं, लेकिन यह टाइमआउट सेट करने के बाद भी 5000 – BigOmega

+1

@Ryan: यदि यह एक बार सौदा है, तो एसक्यूएल प्रबंधक का उपयोग करें अपनी क्वेरी या प्रश्न निष्पादित करें। –

+11

अच्छी सिफारिश है, लेकिन दुर्भाग्य से यह ओपी के सवाल का जवाब नहीं देता है। ऐसे कई मामले हैं जहां डीबी के खिलाफ बहुत लंबी क्वेरी चलाना आपका एकमात्र विकल्प है। SqlCommand.CommandTimeout बदलना इस मामले में काम करेगा। –

1

आप कनेक्शन स्ट्रिंग में "कनेक्ट टाइमआउट = 9 0" जोड़कर इसे पूरा कर सकते हैं। यदि आपकी क्वेरी 30 सेकंड से अधिक समय ले रही है, तो आपको वास्तव में किसी भी तरह से क्वेरी को अनुकूलित करने पर विचार करना चाहिए। इंडेक्स को जोड़ने की आवश्यकता हो सकती है या एक दृश्य को बनाने की आवश्यकता हो सकती है, आदि

@Stijn टिप्पणियों द्वारा इंगित समस्या को सही करने के लिए संपादित किया गया।

+2

कनेक्शनटाइमआउट केवल पढ़ने की संपत्ति है। – Stijn

+1

कनेक्शन स्ट्रिंग में "कनेक्ट टाइमआउट" जोड़ना SQL कनेक्शन के निष्पादन के दौरान डेटाबेस कनेक्शन के साथ समस्याओं को हल करेगा और टाइमआउट नहीं करेगा। आपको उस – dotnetguy

+0

@Stijn के लिए SqlCommand.CommandTimeout सेट करने की आवश्यकता होगी, j0tt सही है कि आप कनेक्शन स्ट्रिंग के माध्यम से कनेक्ट टाइमआउट को बहुत अच्छी तरह से सेट कर सकते हैं। उदाहरण के लिए connectionstrings.com देखें – dotnetguy

18

आप SqlCommand.CommandTimeout संपत्ति सेट करके कमांड पर टाइमआउट अवधि बढ़ा सकते हैं।

+0

मुझे पता है कि यह पुराना है लेकिन मुझे नीचे वोट चाहिए (लेकिन मैं अपनी कम प्रतिष्ठा के कारण नहीं कर सकता)। वह 'SqlCommand.CommandTimeout' का उपयोग नहीं कर सकता क्योंकि वह माइक्रोसॉफ्ट द्वारा एसक्लहेल्पर क्लास का उपयोग कर रहा है। एप्लिकेशन ब्लॉक्स.डाटा। – Dobermaxx99

3

+1 से अल क्योंकि 30 सेकंड बहुत होना चाहिए। समय सीमा अवधि को बनाना वास्तव में अंतर्निहित समस्या के लिए केवल एक पट्टी है।

मेरे अनुभव में संग्रहित प्रो 90% समय का महंगा है। जब मैं आखिरी बार इन त्रुटियों की समीक्षा कर रहा था, तो मेरे पास अंगूठे का एक सामान्य नियम था कि कोई संग्रहित प्रो 1.00 से अधिक नहीं है। वे जितना अधिक महंगा हैं, उतना अधिक जोखिम जो हमें अवरुद्ध करने और इन अपवादों को उत्पन्न करने के लिए था।

+0

आप कैसे जानते हैं कि इस दिनचर्या के लिए प्रदर्शन मानदंड क्या है? हो सकता है कि यह एक पृष्ठभूमि नौकरी है जो एक संग्रहीत proc –

+0

में बहुत कुछ करता है तो स्पष्ट रूप से यह सलाह लागू नहीं होती है। चेतावनी emptor। –

8

तो कनेक्शन स्ट्रिंग में जोड़ें:

server={servername};database={dbname};uid={username};pwd={password};Connect Timeout=600 
+0

क्या ओपी कमांड टाइमआउट को बढ़ाने के तरीके को जानने का प्रयास नहीं कर रहा है? आप इसे कनेक्शन स्ट्रिंग से नहीं बदल सकते हैं।@ जेपी अलीतो का जवाब पूछा जा रहा है कि निकटतम है – dotnetguy

2

इस्तेमाल किया क्वेरी डेटा की मात्रा के लिए अनुकूलित नहीं किया गया था। हमारे मामले में हमने अप्रयुक्त डेटा को शुद्ध कर दिया है, लेकिन एक बेहतर विकल्प क्वेरी को अनुकूलित करना या हाउसकीपिंग पर नजर डालना चाहिए। कार्रवाई के बाद हमें अब त्रुटि नहीं मिली। यह उस स्थिति पर निर्भर करता है जिसमें आपको यह त्रुटि मिलती है और यदि यह समाधान आपकी मदद करेगा।

संबंधित मुद्दे

 संबंधित मुद्दे