Hyper-V’de SQL Server çalıştırırken “bekleme işlemi zaman aşımına uğradı”


22

Hyper-V örneğinde SQL Server (2012) kullanıyorum. Bol miktarda kaynağa sahip ve toplam kaynakların% 25'ini ayırmış, VHD hızlı tepki süreleri için çok hızlı bir SSD sürücüsüne yerleştirilmiş.

Her zaman ve sonra bir süredir SQL Server kullanan uygulamalara erişilemediğinde "Bekleme işlemi zaman aşımına uğradı" hatası alıyor. Veritabanına yeniden yüklenirken veya yeniden denenirken, "uyanmış" görünüyor ve her zaman olduğu gibi hızlı.

Bu yumuşak uyku modunun bu tür bir ortamda oluşmamasını sağlamanın bir yolu var mı?

Katma

Özel Durum Ayrıntıları: System.ComponentModel.Win32Exception: Bekleme işlemi zaman aşımına uğradı


1
Kontrol etmek için bir olasılık veritabanı seçenekleri, Otomatik Kapatma'nın Yanlış'a ayarlandığından emin olun. Bu olsaydı, kapanış ve açılış olaylarını SQL günlüğünde görebilirsiniz.
Jason Cumberland

AutoClose’i değiştirmek işe yaramadı, muhtemelen yavaşlayan veritabanları değil. Sorun büyük olasılıkla Hyper-V ve SQL Server Kombinasyonu ile ilgilidir.
Eric Herlitz,

Diğer yanıtlar işe yaramazsa , support.microsoft.com/en-us/kb/2605597 adresinde ne olduğunu söyleyen stackoverflow.com/a/28626223/1290868'i deneyin .
15

Sql Server için hedef% 100 ayrılmış olmalıdır.
Joel Coel

Yanıtlar:


22

Bu komutu çalıştırmayı deneyin:

sp_updatestats yürütme

İnanılmaz bir şekilde sorunu çözdü.

Yukarıdaki kod komut çalıştırılmadan önceki hatasında.

[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


2
Bu komutu çalıştırmadan önce olası sonuçları (bildiğiniz her komutu) bilmelisiniz.
Sohail xIN3N,

3
Bunun sonuçları konusundaki endişelerinizle gerçekten ilgileniyorum? Bağlantılı mesaj, "aslında o kadar fazla zarar verebilir ve en az önerilen seçenek" diyor. - ancak tek sorun, bakım planlarınızın zaten yaptığı şeyleri yapması ya da verimsiz olması gibi görünüyor - eğer alternatif tamamen kırılmış bir SQL server örneği ise - Neden yavaş olabileceğini düşündüğünüzden emin değilim. veya gereksiz?
Ian Grainger

1
@IanGrainger ile aynı şeyi merak ediyorum ... kimse yürütmenin neden exec sp_updatestatskötü bir fikir olduğunu açıklamayı umursuyor mu?
Flo

1

Ben de aynı sorunu yaşadım. Koşmak exec sp_updatestatsbazen işe yarıyordu ama her zaman değil. NOLOCKSorgularımı hızlandırmak için sorgularımdaki ifadeyi kullanmaya karar verdim . NOLOCKFROM yan tümcesinden sonra eklemeniz yeterli , örneğin:

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

Yazının tamamını buradan okuyun .


1

Ben de aynı problemi yaşadım ve bunun Hyper-V VM'de yeterli bellek tahsisinden kaynaklanmadığını gördüm. Belleği dinamik olarak ayarlamıştım ancak gerektiği kadar ölçeklemedi - sabit bir belleğe geçmek, benim durumumda 32GB, sorunu çözdü. SqlBulkCopy ve Sql Server arasındaki etkileşim gerektiğinde daha fazla bellek elde edemiyor gibi görünüyor?

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.