症狀
假設你使用 Microsoft SQL Server 2014。 當你嘗試在原生編譯的儲存程序中使用 datepart (平日) 時,會發生存取違規,連線就會被終止。 此外,您會收到以下錯誤訊息:
注意
當前指令發生嚴重錯誤。 如果有結果,應該被丟棄。
原因
問題發生在 SQL Server 2014 的一個缺陷。
使用 datepart 搭配 char 參數會隱含地轉換成 datetimeoffset。 原生儲存程序不支援 datetimeoffset。
解決方式
熱修正套用後,SQL Server 會新增邏輯,將 char 參數轉換為 datetime2(原生儲存程序)及 datetimeoffset(一般儲存程序與常數摺疊)。
此問題首次在 SQL Server 的累積更新中得到修正。
2014 SQL Server 累積更新 1 /en-us/help/2931693
關於 SQL Server 的累積更新
每次新的 SQL Server 累積更新都包含了之前累積更新中包含的所有熱修補與安全修補。 請查看 SQL Server 的最新累積更新:
因應措施
為了解決這個問題,請明確轉換成支援的 datetime 類型。
狀態
Microsoft 已確認這是「適用對象」一節中列出的 Microsoft 產品中的問題。