KB4015561 - 修正:在 SQL Server 中執行 END TRY 區段之前捨棄預存程序時,會發生存取違規

套用到
SQL Server 2012 Developer SQL Server 2012 Enterprise SQL Server 2012 Enterprise Core SQL Server 2012 Standard SQL Server 2012 Service Pack 3 SQL Server 2016 Developer - duplicate (do not use) SQL Server 2016 Enterprise - duplicate (do not use) SQL Server 2016 Enterprise Core - duplicate (do not use) SQL Server 2016 Standard - duplicate (do not use) SQL Server 2016 Service Pack 1 SQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Enterprise Core - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use) SQL Server 2014 Service Pack 2 - duplicate (do not use)

症狀

請考慮以下案例:

• 您有一個包含 TRY 的預存程序... Microsoft SQL Server 中的 CATCH 建構。
• 預存程序包含 WITH RESULT SETS 子句,並由 sp_prepare 或 sp_execute 方法執行。
• 在執行 END TRY 區段之前,會先捨棄預存程序。 這會造成類似「找不到預存程序<SP_Name>」的 2812 錯誤。

在此情況下,SQL Server會崩潰並生成 AV) (存取違規,最終可能導致伺服器關閉。 此外,會在 SQL Server 錯誤記錄檔中產生傾印檔案。

解決方式

此問題已在下列 SQL Server 累積更新中修正:

SQL Server 2016 RTM 的累積更新 7

SQL Server 2016 SP1 累積更新 3

SQL Server 2014 SP2 的累積更新 6

SQL Server 2014 SP1 的累積更新 13

SQL Server 2012 SP3 的累積更新 9

關於 SQL Server 的累積更新:

SQL Server 的每個新累積更新都包含所有 Hotfix 和先前累積更新的所有安全性修正程式。 查看 SQL Server 的最新累積更新:

適用於 SQL Server 2016 的最新累積更新

適用於 SQL Server 2014 的最新累積更新

適用於 SQL Server 2012 的最新累積更新

狀態

Microsoft 已確認這是「適用對象」一節中列出的 Microsoft 產品中的問題。

參考資料

了解 Microsoft 用來說明軟體更新的術語。