Sql-Server

在 Hyper-V 中執行 SQL Server 時出現“等待操作超時”

  • October 24, 2016

我在 Hyper-V 實例上執行 SQL Server (2012)。它擁有充足的資源和總資源的 25% 預留,VHD 放置在非常快的 SSD 驅動器上,以實現快速響應時間。

有時,當使用 SQL Server 的應用程序有一段時間沒有被訪問時,它們會收到錯誤“等待操作超時”。當重新載入或重試訪問數據庫時,它似乎已經“喚醒”並且和以往一樣快。

有什麼辦法可以保證這種環境下不會出現這種軟睡眠模式?

添加

異常詳細資訊: System.ComponentModel.Win32Exception:等待操作超時

嘗試執行此命令:

執行 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

引用自:https://serverfault.com/questions/419997