2011-05-03 23 views
5

का जवाब नहीं दे रहा है, मुझे यकीन नहीं है कि यह एक वीबी.NET त्रुटि या SQL सर्वर है। लेकिन मैं स्टैक ट्रेस निम्नलिखित के साथ ऊपर त्रुटि मिलती है:टाइमआउट समाप्त हो गया। ऑपरेशन पूरा होने से पहले टाइमआउट अवधि समाप्त हो गई है या सर्वर

[SqlException (0x80131904): समय समाप्त समाप्त हो गई है। समय समाप्ति की अवधि बीत आपरेशन के पूरा होने या सर्वर प्रतिसाद नहीं दे रहा से पहले।]
System.Data.SqlClient.SqlConnection.OnError (SqlException अपवाद, बूलियन breakConnection) 1,950,890 System.Data.SqlClient.SqlInternalConnection। OnError (SqlException अपवाद, बूलियन breakConnection) 4,846,875 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 डी एस, RunBehavior runBehavior, स्ट्रिंग resetOptionsString) +297
System.Data.SqlClient.SqlCommand.RunExecuteReaderTds (CommandBehavior cmdBehavior, RunBehavior runBehavior, बूलियन returnStream, बूलियन async) 954 System.Data.SqlClient.SqlCommand.RunExecuteReader (कमांडबिहार cmdBehavior, RunBehavior runBehavior, बूलियन returnStream, स्ट्रिंग विधि, DbAsyncResult परिणाम) 162
System.Data.SqlClient.SqlCommand.RunExecuteReader (CommandBehavior cmdBehavior, RunBehavior runBehavior, बूलियन returnStream, स्ट्रिंग विधि) +32 System.Data.SqlClient.SqlCommand.ExecuteReader (CommandBehavior व्यवहार, स्ट्रिंग विधि) 141
System.Data.SqlClient.SqlCommand.ExecuteDbDataReader (CommandBehavior व्यवहार) 12
System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader (CommandBehavior व्यवहार) +10
System.Data.Common.DbDataAdapter.FillInternal (डेटा डाटासेट, DataTable [] datatables, Int32 सेट startRecord, Int32 maxRecords, स्ट्रिंग srcTable, IDbCommand आदेश, CommandBehavior व्यवहार) 130
System.Data.Common.DbDataAdapter.Fill (डेटासेट डेटासेट Int32 startRecord, Int32 maxRecords, स्ट्रिंग srcTable, IDbCommand आदेश, CommandBehavior व्यवहार) 287
System.Data.Common.DbDataAdapter.Fill (डेटासेट डाटासेट) +94
GlobalFunctions.GlobalF.GetComplaintTrendingList6 (DATETIME FirstMonth DATETIME, LastMonth, Int32 rowLeve एल) 489
ASP.website_complaints_complainttrendinglist6_aspx.Main() ई में : \ inetpub \ amdmetrics-d.web.abbott.com \ wwwroot \ वेबसाइट \ शिकायतें \ ComplaintTrendingList6.aspx: 94 ASP.website_complaints_complainttrendinglist6_aspx।Page_Load (वस्तु प्रेषक, EventArgs ई) में ई: \ inetpub \ amdmetrics-d.web.abbott.com \ wwwroot \ वेबसाइट \ शिकायतें \ ComplaintTrendingList6.aspx: 60 System.Web.Util.CalliHelper.EventArgFunctionCaller (IntPtr fp, वस्तु ओ, वस्तु टी, EventArgs ई) +14 System.Web.Util.CalliEventHandlerDelegateProxy.Callback (वस्तु प्रेषक, EventArgs ई) 35
System.Web.UI.Control.OnLoad (EventArgs ई) + 99
System.Web.UI.Control.LoadRecursive() +50 System.Web.UI.Page.ProcessRequestMain (बूलियन includeStagesBeforeAsyncPoint, बूलियन includeStagesAfterAsyncPoint) 627

यह माइक्रोसॉफ्ट .NET Framework संस्करण पर है: 2.0.50727.3620; ASP.NET संस्करण: 2.0.50727.3618 और SQL सर्वर 2008 लाइन यह इस त्रुटि के कारण झंडे का कहना है:

1: PrintMessageGrid.DataSource = GlobalFunctions.GlobalF.GetComplaintTrendingList6(FirstMonthDate, LastMonthDate, TheLevel) 

हालांकि मैं क्वेरी विश्लेषक में इस संग्रहीत प्रक्रिया चला सकते हैं और यह 8 सेकंड में वापस आती है। कारण और फिक्स क्या हो सकता है?

यहाँ और अधिक विस्तार जहां मैं इस समारोह की घोषणा है:

Public Shared Function GetComplaintTrendingList6(ByVal FirstMonth As DateTime, ByVal LastMonth As DateTime, ByVal rowLevel As Integer) As DataSet 
    Dim DSPageData As New System.Data.DataSet 
    Dim param(2) As SqlClient.SqlParameter 

    param(0) = New SqlParameter("@FirstMonthDate", SqlDbType.DateTime) 
    param(0).Value = FirstMonth 
    param(1) = New SqlParameter("@LastMonthDate", SqlDbType.DateTime) 
    param(1).Value = LastMonth 
    param(2) = New SqlParameter("@TheLevel", SqlDbType.Int) 
    param(2).Value = rowLevel 

    ''# A Using block will ensure the .Dispose() method is called for these variables, even if an exception is thrown 
    ''# This is IMPORTANT - not disposing your connections properly can result in an unrespsonsive database 
    Using conn As New SQLConnection(ConfigurationSettings.AppSettings("AMDMetricsDevConnectionString")), _ 
    cmd As New SQLCommand("ComplaintTrendingList6", conn), _ 
    da As New SQLDataAdapter(cmd) 
     cmd.CommandType = CommandType.StoredProcedure 
     cmd.Parameters.AddRange(param) 

     da.Fill(DSPageData) 
    End Using 

    Return DSPageData 
End Function 

अजीब बात यह है कि अगर मैं अपने संग्रहीत proc में यह छोटा सा परिवर्तन करना है, यह गुजरता है, लेकिन मेरे डेटा मैं चाहता हूँ नहीं देता है: कोई त्रुटि है, लेकिन इस संस्करण मुझे नहीं देता है जो मैं चाहता:

SELECT E.PRODUCT_GROUP, a.QXP_SHORT_DESC, COUNT(DISTINCT A.QXP_EXCEPTION_NO), A.QXP_REPORT_DATE, DATEADD(M, DATEDIFF(M, 0, A.QXP_REPORT_DATE), 0) AS STARTDATE 
FROM ALL_COMPLAINTS A 
LEFT OUTER JOIN SMARTSOLVE.V_QXP_ISSUE_REF D ON A.QXP_ID = D.IRF_QXP_ID 
INNER JOIN CT_ProductFailures b ON b.old_modes = a.qxp_short_desc 
LEFT OUTER JOIN [MANUAL].PRODUCTS E ON A.EPA_PRD_CODE = E.LIST_NUMBER 
LEFT JOIN SMARTSOLVE.V_CXP_CUSTOMER_PXP C ON A.QXP_ID = C.QXP_ID 
INNER JOIN @SelectedLevels F ON A.[LEVEL] = F.LevelId 
WHERE --[LEVEL] > 0 AND 
(A.QXP_SHORT_DESC <> 'Design Control') 
and A.QXP_REPORT_DATE >= @OneYearAgo AND A.QXP_REPORT_DATE <= @LastMonthDate 
AND (C.QXP_EXCEPTION_TYPE <> 'Non-Diagnostic' OR C.QXP_EXCEPTION_TYPE IS NULL) 
GROUP BY E.PRODUCT_GROUP, A.QXP_REPORT_DATE, A.QXP_SHORT_DESC 

त्रुटि उत्पन्न करने वाले संग्रहीत proc:

INSERT #PVAL_NUM 
SELECT E.PRODUCT_GROUP, b.new_modes 'QXP_SHORT_DESC', COUNT(DISTINCT A.QXP_EXCEPTION_NO), A.QXP_REPORT_DATE, DATEADD(M, DATEDIFF(M, 0, A.QXP_REPORT_DATE), 0) AS STARTDATE 
FROM ALL_COMPLAINTS A 
LEFT OUTER JOIN SMARTSOLVE.V_QXP_ISSUE_REF D ON A.QXP_ID = D.IRF_QXP_ID 
INNER JOIN CT_ProductFailures b ON b.old_modes = a.qxp_short_desc 
LEFT OUTER JOIN [MANUAL].PRODUCTS E ON A.EPA_PRD_CODE = E.LIST_NUMBER 
LEFT JOIN SMARTSOLVE.V_CXP_CUSTOMER_PXP C ON A.QXP_ID = C.QXP_ID 
INNER JOIN @SelectedLevels F ON A.[LEVEL] = F.LevelId 
WHERE --[LEVEL] > 0 AND 
(A.QXP_SHORT_DESC <> 'Design Control') 
and A.QXP_REPORT_DATE >= @OneYearAgo AND A.QXP_REPORT_DATE <= @LastMonthDate 
AND (C.QXP_EXCEPTION_TYPE <> 'Non-Diagnostic' OR C.QXP_EXCEPTION_TYPE IS NULL) 
GROUP BY E.PRODUCT_GROUP, A.QXP_REPORT_DATE, b.new_modes 

उत्तर

3

आप क्वेरी विश्लेषक (या SSMS, इन दिनों) और के साथ क्या मिलता क्या आप आवेदन बहुत अलग बातें, ज्यादातर पैरामीटर के कारण हो सकता हो जाता है सूँघने।

मैं विवरण के लिए एरलैंड सोमरस्क द्वारा this article पढ़ने का सुझाव देता हूं।

4

मेरा मानना ​​है कि इसका मतलब है कि डेटाबेस ऑपरेशन बहुत लंबा हुआ और इसे छोड़ दिया गया।

web.config में एक कनेक्ट टाइमआउट जोड़ने का प्रयास करें

<add key="DBConnection" value="server=LocalHost;uid=sa;pwd=;database=DataBaseName;Connect Timeout=200; pooling='true'; Max Pool Size=200"/> 
+0

रोब, अगर इस संग्रहित प्रो को केवल क्यूए में चलाने के लिए 8 सेकंड लगते हैं, तो क्या आपको लगता है कि यह डिफ़ॉल्ट टाइमआउट सेटिंग्स के साथ समय निकाल देगा? – salvationishere

5

आपको डेटाएडाप्टर के चयन कमांड पर कमांड टाइमआउट बढ़ाने की आवश्यकता है।

नीचे डेटाडेटा के लिए कमांड टाइमआउट बढ़ाने के लिए कोड है।

adapter.SelectCommand.CommandTimeout = 0; 

SQL कनेक्शन टाइमआउट निष्पादित आदेश के लिए टाइमआउट सेट से अलग है।

इसे निम्नानुसार परिभाषित किया गया है। MSDN

-समय से पहले एक कनेक्शन का प्रयास समाप्त और एक त्रुटि पैदा करने की स्थापना का प्रयास करते समय प्रतीक्षा करने के लिए हो जाता है।

कनेक्शन टाइमआउट सेट करने पर ..MSDN

से

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

सभी टाइमआउट के लिए डिफ़ॉल्ट मान 30 सेकंड है।

-1

"..डेटाबेस ऑपरेशन बहुत लंबा हुआ और इसे छोड़ दिया गया।"

यह सही है। यह तब होता है जब सर्वर से आपके कनेक्शन के साथ कोई संघर्ष होता है।

अस्थायी रूप से इसके समाधान के लिए ..

है कि आपका कनेक्शन और क्लिक पर राइट क्लिक करके ऐसा कर सकते "अपने LAN कनेक्शन मरम्मत" "मरम्मत"

स्थायी रूप से इसके समाधान के लिए ..

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

उसके बाद, अब "टाइमआउट समाप्त हो गया" प्रदर्शित करने में कोई त्रुटि नहीं होनी चाहिए।

चीयर्स!

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

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