症狀
假設您在 Microsoft SQL Server 2008 R2、SQL Server 2012 或 SQL Server 2014 中有一個具有 SQL Server 觸發程序的資料表,並在該觸發程序中將插入/刪除的資料表與其他資料表聯結。 當您在此資料表上執行 DML 陳述式時,觸發程序編譯期間可能會發生存取違規,且您會收到下列錯誤:
注意
目前命令發生嚴重錯誤。 如果有結果,應丟棄。
此外,SQL Server 錯誤日誌中會記錄以下錯誤:
注意
<Date><Time> spid# ***Stack 傾印被傳送到 <FilePath>\SQLDumpxxx.txt
<Date><Time> spid# SqlDumpExceptionHandler: Process # generated fatal exception c0000005 EXCEPTION_ACCESS_VIOLATION. SQL Server 正在終止此程序。
<日期><時間> spid# * *******************************************************************************
<日期><時間> spid# *
<Date><Time> spid# * BEGIN STACK DUMP:
<Date><Time> spid# * <Date><Time> spid#
<日期><時間> spid# *
<日期><時間> spid# *
<Date><Time> spid# * Exception address = 00000000009E4F2A 模組 (sqlservr+0000000002D4F2A)
<Date><Time> spid# * Exception Code = c0000005 EXCEPTION_ACCESS_VIOLATION
<日期><時間> spid# * 發生存取違規寫入位址 000000000000000000
<日期><時間> spid# * 輸入緩衝區 510 位元組 -
<日期><時間> spid# * SQL_query_code
解決方式
此問題已先在下列 SQL Server 累積更新中修正。
SQL Server 2012 SP2 的累積更新 1 /zh-tw/help/2976982
2014 年 SQL Server 累積更新 2 /zh-tw/help/2967546
SQL Server 2012 SP1 的累積更新 10 /zh-tw/help/2954099
SQL Server 2008 R2 SP2 的累積更新 12 /zh-tw/help/2938478
關於 SQL Server 的累積更新
SQL Server 的每個新累積更新都包含所有 Hotfix 和先前累積更新的所有安全性修正程式。 查看 SQL Server 的最新累積更新:
- 適用於 SQL Server 2012 SP2 的最新累積更新
- 適用於 SQL Server 2014 的最新累積更新
- 適用於 SQL Server 2012 SP1 的最新累積更新
- 適用於 SQL Server 2008 R2 SP2 的最新累積更新
因應措施
若要解決此問題,請勿直接在將插入/刪除的資料表與其他資料表聯結的查詢中使用,請改將它快取在暫存資料表中,然後在查詢中使用暫存資料表。
狀態
Microsoft 已確認這是「適用對象」一節中列出的 Microsoft 產品中的問題。