Applies ToSQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use) SQL Server 2012 Enterprise SQL Server 2012 Developer SQL Server 2012 Express SQL Server 2012 Standard SQL Server 2012 Web SQL Server 2012 Business Intelligence SQL Server 2012 Analysis Services SQL Server 2012 Developer SQL Server 2012 Enterprise SQL Server 2012 Standard

徵狀

請試想下列案例:

  • 您在 Microsoft SQL Server 2014 或 SQL Server 2012 中執行程式。

  • 此套裝程式含下列條件的查詢:

    • 它會連接較頻繁更新的資料表。

    • 它有包含參數的 WHERE 子句。

    • 它使用選項(重新編譯)。

  • 這個程式是在有不同參數值集的多個併發連接上執行。

  • 您的伺服器是在導致上述每個程式執行時間比平時更長的大量負載所造成。

在這種情況下,如果在查詢編譯結束與您連線的查詢執行開始之間的時間間隔期間達到下列其他條件,您可能會收到在連線時執行的程式不正確的結果:

  • 條件 1:另一個併發連線會對已連接的資料表進行更新,以便在連線時觸發再次編譯查詢。

  • 條件 2:相同的查詢已從另一個連線重新編譯,然後放入快取中。

重要 這種時間問題極少見。

原因

發生這個問題的原因是,在您的連線上執行查詢之後,查詢的參數值會變更為不正確的值。 發生這種情況是因為在併發編譯之間存在極少的時間問題。

每個新的 SQL Server 累計更新都包含所有的修正程式,以及前一個累積更新中所包含的所有安全性修正程式。 查看 SQL Server 的最新累計更新:

狀態

Microsoft 已確認本篇文章<適用於>一節所列之 Microsoft 產品確實有上述問題。

需要更多協助嗎?

想要其他選項嗎?

探索訂閱權益、瀏覽訓練課程、瞭解如何保護您的裝置等等。

社群可協助您詢問並回答問題、提供意見反應,以及聆聽來自具有豐富知識的專家意見。