修正 ︰ 在執行中 SQL Server 資料表變數使用資料指標的預存程序時,存取違規

請注意--重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,且可能由 Microsoft Community 利用 Community Translation Framework技術或人工進行事後編修。翻譯過程並無專業譯者參與。Microsoft 同時提供使用者人為翻譯、機器翻譯及社群編修後的機器翻譯三種版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,所有翻譯文章都可能不盡完美,內容都可能出現詞彙、語意或文法上的錯誤。就翻譯內容之不正確或錯誤,或客戶因使用翻譯內容所產生的任何損害,微軟不負擔任何責任。Microsoft將依合理的商業努力不斷地更新機器翻譯軟體和工具,以期能為使用者提供更好的服務。

按一下這裡查看此文章的英文版本:3138930
徵狀
假設您是建立在 Microsoft SQL Server 2012年或 SQL Server 2014年資料表變數使用資料指標的預存程序。此外,預存程序會藉由使用游標位置目前的陳述式,更新資料表。

例如,您的預存程序可能如下所示 ︰
CREATE PROCEDURE dbo.usp_TestSP AS  BEGIN  DECLARE @TableVar TABLE (SomeInt INT NULL) INSERT @TableVar VALUES (NULL)  DECLARE @curInt INT, @newInt INT SET @newInt = 1  DECLARE ccc CURSOR LOCAL FOR SELECT SomeInt FROM @TableVar WHERE SomeInt IS NULL  OPEN ccc  FETCH NEXT FROM ccc INTO @curInt UPDATE @TableVar SET SomeInt = @newInt WHERE CURRENT OF cccCLOSE ccc  SELECT * FROM @TableVar END 

當您執行您的預存程序使用sp_refreshsqlmodule系統預存程序,可能會發生存取違規,並可能會收到類似下列的錯誤訊息 ︰
訊息 596,層級 21 1Cannot 狀態繼續執行的工作階段正處於清除狀態。目前的命令訊息 0,層級 20 狀態 0A 嚴重的錯誤發生。結果,如果有的話,應加以捨棄。

在此情況下,類似下列的錯誤也會寫入至 SQL Server 錯誤記錄檔 ︰
日期 time.730 spid51 SqlDumpExceptionHandler ︰ 處理程序 51 產生嚴重的例外狀況 c0000005 EXCEPTION_ACCESS_VIOLATION。SQL Server 正在終止此程序。
date time.730 spid51 * *******************************************************************************
日期 time.730 spid51 *
日期 time.730 spid51 * 開始堆疊傾印 ︰
日期 time.730 spid51 * 日期時間 spid 51
日期 time.730 spid51 *
日期 time.730 spid51 *
日期 time.730 spid51 * 例外狀況位址 = 00007FFC270236D5 Module(sqllang+00000000005036D5)
日期 time.730 spid51 * 例外狀況代碼 = c0000005 EXCEPTION_ACCESS_VIOLATION
日期 time.730 spid51 * 讀取位址 0000006F00620074 時,發生存取違規
日期 time.730 spid51 * 輸入緩衝區 136 個位元組-
日期 time.730 spid51 * 執行 sp_refreshsqlmodule N'[dbo]。[usp_TestSP]'
日期 time.730 spid51 *
日期 time.730 spid51 *

解決方案

累積更新資訊

在下列的更新中修正這個問題 ︰
建議 ︰ 安裝最新的 SQL Server 累積更新

每個新的累積更新的 SQL Server 包含的所有 hotfix 與安全性修正,全都包含在先前的累積更新。取出 SQL Server 的最新的累積更新 ︰
狀況說明
Microsoft 已確認這是<套用> 一節所列出的 Microsoft 產品的問題。
参考
深入了解 術語 ,Microsoft 會用其來描述軟體更新。

警告:本文為自動翻譯

內容

文章識別碼:3138930 - 最後檢閱時間:05/31/2016 06:52:00 - 修訂: 4.0

Microsoft SQL Server 2012 Service Pack 3, Microsoft SQL Server 2012 Service Pack 2, Microsoft SQL Server 2014 Service Pack 1, Microsoft SQL Server 2014 Developer, Microsoft SQL Server 2014 Enterprise, Microsoft SQL Server 2014 Standard

  • kbqfe kbfix kbexpertiseinter kbsurveynew kbmt KB3138930 KbMtzh
意見反應