KB3136496 - 修正:當查詢透過同義詞參考 SQLCLR 函式時,存取違規發生於 2014 SQL Server 和 2016

套用到
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 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)

症狀

請考慮以下案例:

  • 有一個 SQLCLR 函式被宣告為「確定性」,這個函式可以用來「用常數替換」的優化。
  • 有一個同義詞指向 SQLCLR 函式。
  • (TVF 的表值函式) 透過同義詞參考 SQLCLR 函式。

在這種情況下,當應用程式查詢此 TVF 時,可能會發生存取違規,並可能收到類似以下錯誤訊息:

注意

  • 訊息 0,等級 11,狀態 0,第 14 列
  • 當前指令發生嚴重錯誤。 如果有結果,應該被丟棄。

此外,錯誤訊息也會記錄在 SQL Server 錯誤日誌中。

解決方式

SQL Server 服務包資訊

此問題已在以下 SQL Server 服務包中修正:

Service Pack 2 for SQL Server 2016

Service Pack 3 for SQL Server 2014

關於 SQL Server 服務包:

Service Pack 是累積性的。 每個新版 Service Pack 都包含前一版 Service Pack 中所有的修正程式,以及任何新增的修正程式。 我們的建議是套用該服務包的最新服務包及累積更新。 所以在安裝最新版的 Service Pack 之前,您不需要安裝前一版的 Service Pack。 請使用以下文章中的表1,查詢最新服務包及最新累積更新的更多資訊。

如何確定 SQL Server 及其元件的版本、版本與更新等級

狀態

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

參考資料

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