हाइपर- V में SQL सर्वर चलाते समय "प्रतीक्षा ऑपरेशन समाप्त हो जाता है"


22

मैं हाइपर- V उदाहरण पर SQL सर्वर (2012) चला रहा हूं। इसमें बहुत सारे संसाधन हैं और कुल संसाधनों का 25% आरक्षित है, वीएचडी को त्वरित प्रतिक्रिया समय के लिए बहुत तेज एसएसडी ड्राइव पर रखा गया है।

हर अब और फिर जब SQL सर्वर का उपयोग करने वाले एप्लिकेशन को कुछ समय के लिए एक्सेस नहीं किया गया है, तो उन्हें "प्रतीक्षा समय समाप्त हो गया" त्रुटि मिलती है। जब डेटाबेस को एक्सेस करने के लिए पुनः लोड या पुन: प्रयास कर रहा है, तो ऐसा लगता है कि यह "जाग गया" है और हमेशा की तरह तेज़ है।

क्या यह सुनिश्चित करने का कोई तरीका है कि यह नरम नींद मोड इस तरह के वातावरण पर न हो?

जोड़ा गया

अपवाद विवरण: System.ComponentModel.Win32Exception: प्रतीक्षा कार्रवाई समय समाप्त हो गई


1
डेटाबेस विकल्पों पर जाँच करने की एक संभावना है, सुनिश्चित करें कि ऑटो क्लोज़ फ़ाल्स पर सेट है। यदि यह हो रहा था, तो आप SQL लॉग में समापन और उद्घाटन की घटनाओं को देखने में सक्षम होंगे।
जेसन कंबरलैंड

AutoClose बदलने से काम नहीं चला, यह शायद डेटाबेस धीमा नहीं करता है। समस्या हाइपर- V और SQL सर्वर कॉम्बिनेशन से संबंधित है।
एरिक हेर्लिट्ज़

यदि अन्य उत्तर काम नहीं करते हैं, तो stackoverflow.com/a/28626223/1290868 का समर्थन करें, जो यह बताता है कि support.microsoft.com/en-us/kb/2605597 पर क्या हो सकता है।
myuce

Sql सर्वर के लिए, लक्ष्य 100% आरक्षित होना चाहिए।
जोएल कोएल सेप

जवाबों:


22

इस कमांड को निष्पादित करने का प्रयास करें:

sp_updatestats निष्पादित करें

यह, अविश्वसनीय रूप से, समस्या का समाधान किया।

कमांड से पहले त्रुटि के ऊपर कोड निष्पादित किया गया है।

[Win32Exception (0x80004005): The wait operation timed out]

[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, Action`1 wrapCloseInAction) +1742110
   System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction) +5279619
   System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose) +242
   System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady) +1434
   System.Data.SqlClient.SqlDataReader.TryConsumeMetaData() +61
   System.Data.SqlClient.SqlDataReader.get_MetaData() +90
   System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString) +365
   System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite) +1355
   System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource`1 completion, Int32 timeout, Task& task, Boolean asyncWrite) +175
   System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method) +53
   System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method) +134
   System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior) +41
   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) +140
   System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) +316
   System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, String srcTable) +86
   System.Web.UI.WebControls.SqlDataSourceView.ExecuteSelect(DataSourceSelectArguments arguments) +1482
   System.Web.UI.DataSourceView.Select(DataSourceSelectArguments arguments, DataSourceViewSelectCallback callback) +21
   System.Web.UI.WebControls.DataBoundControl.PerformSelect() +138
   System.Web.UI.WebControls.BaseDataBoundControl.DataBind() +30
   System.Web.UI.WebControls.BaseDataBoundControl.EnsureDataBound() +79
   System.Web.UI.WebControls.BaseDataBoundControl.OnPreRender(EventArgs e) +22
   System.Web.UI.Control.PreRenderRecursiveInternal() +83
   System.Web.UI.Control.PreRenderRecursiveInternal() +155
   System.Web.UI.Control.PreRenderRecursiveInternal() +155
   System.Web.UI.Control.PreRenderRecursiveInternal() +155
   System.Web.UI.Control.PreRenderRecursiveInternal() +155
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +974

3
न केवल परिणामों को समझने के बिना इस आदेश को चलाते हैं। sqlperformance.com/2013/07/sql-statistics/statistics-updates और stackoverflow.com/questions/23440770/...
Rosdi

2
आपको इस कमांड को चलाने से पहले संभावित परिणाम पता होना चाहिए (वास्तव में हर कमांड जिसे आप चलाते हैं)।
सोहेल xIN3N

3
मैं वास्तव में इस के परिणामों के बारे में आपकी चिंता के रूप में दिलचस्पी रखता हूं? लिंक की गई पोस्ट कहती है, "वास्तव में इससे अच्छा नुकसान हो सकता है, और यह कम से कम अनुशंसित विकल्प है।" - लेकिन ऐसा लगता है कि एकमात्र समस्या यह है कि यह आपके रखरखाव की योजनाओं को पहले से ही कर सकता है, या अक्षम हो सकता है - यदि विकल्प एक SQL सर्वर उदाहरण है जो पूरी तरह से टूट गया है - मुझे यकीन नहीं है कि आप यह क्यों सोच रहे हैं कि यह धीमा हो सकता है या बेमानी?
इयान ग्रिंगर

1
मैं @IanGrainger के रूप में एक ही बात सोच रहा हूँ ... किसी को भी परवाह है कि निष्पादन क्यों exec sp_updatestatsएक बुरा विचार है?
फ़्लो

1

मेरी भी यही समस्या थी। दौड़ना exec sp_updatestatsकभी-कभी काम आता था, लेकिन हमेशा नहीं। मैंने NOLOCKप्रश्नों को गति देने के लिए अपने प्रश्नों में कथन का उपयोग करने का निर्णय लिया । बस NOLOCKअपने FROM क्लॉज के बाद जोड़ें , जैसे:

SELECT clicks.entryURL, clicks.entryTime, sessions.userID
FROM sessions, clicks WITH (NOLOCK)
WHERE sessions.sessionID = clicks.sessionID AND clicks.entryTime > DATEADD(day, -1, GETDATE())

पूरा लेख यहाँ पढ़ें ।


1

मुझे ठीक वैसी ही समस्या थी और मैंने पाया कि यह हाइपर-वी वीएम पर पर्याप्त मेमोरी आवंटन नहीं होने के कारण हुआ था। मेरे पास डायनामिक सेट करने के लिए मेमोरी थी, लेकिन यह आवश्यक रूप से नहीं बढ़ रहा था - मेमोरी की एक निश्चित मात्रा पर स्विच करना, मेरे मामले में 32 जीबी, ने समस्या को हल किया। SqlBulkCopy और Sql Server के बीच की बातचीत आवश्यकता पड़ने पर अधिक मेमोरी प्राप्त करने में सक्षम नहीं लगती है ??

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.