KB3042135-修正:當您使用 SQL Server 2012 或 SQL Server 2014 時,發生存取侵犯及「此程式碼應該引發例外」錯誤

徵狀

假設您使用的是 Microsoft SQL Server 2012 或 SQL Server 2014。 當在 SQL Server 中發生鎖死時,您會收到下列由於鎖死監視器所造成的存取違規:

sqldk!CSlotGroup::P shReleasesqldk!CSlotPageMgr:: Releasesqllang! commondeletesqllang! delete [] sqllang!CTraceDataSTVF::InternalReleaseResourcessqllang!TTableBase<CTraceDataSTVFInfo>:: ReleaseResourcessqllang!CTraceDataSTVF::{dtor}sqllang!CTraceDataSTVF:: ' 標量刪除 destructor'sqlmin!CSTVFInternal::Releasesqlmin!CQueryExecCoNtext:: ~ CQueryExecCoNtextsqlmin!CQueryInstance::ShutdownQueryExecCoNtextsqlmin!CQueryScan::ShutdownQueryExecCoNtextsqlmin!CQueryScan::D estroyQueryOnExceptionsqllang!CXStmtQuery::ShutdownOnExceptionsqllang!CXStmtQuery::FinishOnExceptionImpsqllang!GetInterruptTickssqllang!InterruptTicks<未簽署 __int64>:: LoadTickssqllang!SOS_Ticks<InterruptTicks<無符號 __int64>,-3>:: LoadTickssqllang! ' CMsqlExecCoNtext:: FExecute "::" 1 ":: catch $ 3msvcr100! _CallSettingFramemsvcr100! __CxxCallCatchBlockntdll!RcFrameConsolidationsqllang!CMsqlExecCoNtext::FExecutesqllang!CSQLSource::Executesqllang!CStmtExecProc::XretLocalExecsqllang!CStmtExecProc::XretExecExecutesqllang!CXStmtExecProc::XretExecutesqllang!CExecStmtLoopVars::ExecuteXStmtAndSetXretReturnsqllang!CMsqlExecCoNtext:: ExecuteStmts<1,0>sqllang!CMsqlExecCoNtext::FExecutesqllang!CSQLSource::Executesqllang!ExecuteSqlsqllang!CSpecProc::ExecuteSpecialsqllang!CSpecProc:: Executesqllang! process_requestsqllang! process_commandssqldk!SOS_Task::P aram:: Executesqldk!SOS_Scheduler:: RunTasksqldk!SOS_Scheduler::P rocessTaskssqldk!SchedulerManager::WorkerEntryPointsqldk!SystemThread::RunWorkersqldk!SystemThreadDispatcher::P rocessWorkersqldk!SchedulerManager::ThreadEntryPointkernel32!BaseThreadInitThunkntdll!RtlUserThreadStart

存取侵犯之後,您會收到來自 SQL Server 錯誤記錄的下列錯誤訊息:

<日期> <時間> Spid<ID> 使用 "dbghelp" 版本 "4.0.5" <日期> <> spid Time> <0 id> * * Dump 執行緒-spid = <ID> ID ,EC = 0x0000007F8608E160> <4> <> 的Date Spid> <8識別碼> * * * 堆疊轉儲 <的> 檔案路徑<。 txt Time> <4日期> <時間> spid> <8 ID> * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * <日期> <時間> spid> <4 id> * <日期> <> spid<id> * 開始堆疊轉儲: <日期> <時間> spid<ID> * <日期> <> spid<><日期> <> spid> <8 識別碼> *<> <>> <4 spid > 識別碼> <6*> <>> <0>TimeTime: !"此程式碼 "<日期Time> <時間> spid> <6 ID> * spid: <識別碼><日期> <> Spid> <4 id> Time * 進程識別碼: 3556> <6日期> <時間> spid><0 ID> * <日期> <>spid><6 ID> *輸入緩衝區37位元組-<日期> <>spid> <02> * 16 00 00 00 12 00 00 00 02 00 00 00 00 00 00 00 00 00> <04 > <>> <08> & 00 00 00 00 00 26 04 04 05 00 0001 00 00 00> <時間> spid> <5 id> * 00> <7日期> <時間> spid> <1識別碼> * <日期> <> spid> <7識別碼> * ... <日期> <> 的 spid > <3 id>> <5 Time> <Time> <9識別碼> [INFO] 身分識別開始結束 |Speculate 已準備好 LazyCommit ReadOnly | 的狀態結果錯誤事務資料庫 ThreadId |ReadSet WriteSet ScanSet 點 LogSizeRq |CommitDep TotalComm 相依0相依1相依于第3相依的4相依于第7個相依于 7 |區域位置 |> <41日期> <時間> Spid> <45 id> 超時等候外部轉儲程式11800。 <日期> <時間> spid> <1 id> 錯誤:17066、嚴重性:16、State: 1. <日期> <時間> spid> <7 Id> SQL Server Assertion: File: <qxcntxt>,line = 1143 失敗斷言 = '!」此程式碼 "" 不應引發任何例外狀況。 此錯誤可能是與時間有關的。 如果在重新執行語句後發生錯誤,請使用 DBCC CHECKDB 來檢查資料庫的結構完整性,或重新開機伺服器以確保記憶體中資料結構未損毀。

解決方案

累積更新資訊

此問題最初是在 SQL Server 的後續累積更新中修正。

每個新的 SQL Server 累計更新都包含所有的修正程式,以及前一個累積更新中所包含的所有安全性修正程式。 我們建議您下載並安裝最新的 SQL Server 累積更新:

狀態

Microsoft 已確認本篇文章<適用於>一節所列之 Microsoft 產品確實有上述問題。

Need more help?

Expand your skills
Explore Training
Get new features first
Join Microsoft Insiders

Was this information helpful?

Thank you for your feedback!

Thank you for your feedback! It sounds like it might be helpful to connect you to one of our Office support agents.

×