증상
Microsoft SQL Server 2012 또는 SQL Server 2014 사용 한다고 가정 합니다. SQL Server 교착 상태가 발생 하면 교착 상태 모니터에 의해 발생 하는 다음과 같은 액세스 위반이 나타납니다.
sqldk!CSlotGroup::PshRelease
sqldk!CSlotPageMgr::Release
sqllang!commondelete
sqllang! delete
sqllang!CTraceDataSTVF::InternalReleaseResources
sqllang!TTableBase<CTraceDataSTVFInfo>::ReleaseResources
sqllang! CTraceDataSTVF:: {dtor}
sqllang! CTraceDataSTVF:: '스칼라 삭제 중인 소멸자'
sqlmin!CSTVFInternal::Release
sqlmin!CQueryExecContext::~CQueryExecContext
sqlmin!CQueryInstance::ShutdownQueryExecContext
sqlmin!CQueryScan::ShutdownQueryExecContext
sqlmin!CQueryScan::DestroyQueryOnException
sqllang!CXStmtQuery::ShutdownOnException
sqllang!CXStmtQuery::FinishOnExceptionImp
sqllang!GetInterruptTicks
sqllang! < 부호 없는 __int64 > InterruptTicks:: LoadTicks
sqllang! < InterruptTicks < 부호 없는 __int64 >-3 > SOS_Ticks:: LoadTicks
sqllang!`CMsqlExecContext::FExecute'::`1'::catch$3
msvcr100!_CallSettingFrame
msvcr100!__CxxCallCatchBlock
ntdll!RcFrameConsolidation
sqllang!CMsqlExecContext::FExecute
sqllang!CSQLSource::Execute
sqllang!CStmtExecProc::XretLocalExec
sqllang!CStmtExecProc::XretExecExecute
sqllang!CXStmtExecProc::XretExecute
sqllang!CExecStmtLoopVars::ExecuteXStmtAndSetXretReturn
sqllang!CMsqlExecContext::ExecuteStmts<1,0>
sqllang!CMsqlExecContext::FExecute
sqllang!CSQLSource::Execute
sqllang!ExecuteSql
sqllang!CSpecProc::ExecuteSpecial
sqllang!CSpecProc::Execute
sqllang!process_request
sqllang!process_commands
sqldk!SOS_Task::Param::Execute
sqldk!SOS_Scheduler::RunTask
sqldk!SOS_Scheduler::ProcessTasks
sqldk!SchedulerManager::WorkerEntryPoint
sqldk!SystemThread::RunWorker
sqldk!SystemThreadDispatcher::ProcessWorker
sqldk!SchedulerManager::ThreadEntryPoint
kernel32!BaseThreadInitThunk
ntdll!RtlUserThreadStart
액세스 위반 후 SQL Server 오류 로그에서 다음과 같은 오류 메시지가 나타납니다.
<날짜><시간> <ID> spid 사용 하 여 'dbghelp.dll' 버전 '4.0.5'
<ID> <날짜><시간> spid * * 스레드-spid 덤프 = <ID> EC = 0x0000007F8608E160
<ID> <날짜><시간> spid * 스택 덤프 <파일 경로> 보내는 \ <덤프 파일 이름>.txt
<Date> <Time> spid<ID> * *******************************************************************************
<Date> <Time> spid<ID> *
<ID> <날짜><시간> spid * 시작 스택 덤프:
<날짜><시간> spid <ID> * <ID> <날짜><시간> spid
<Date> <Time> spid<ID> *
<ID> <날짜><시간> spid * 위치: qxcntxt.cpp:1143
<ID> <날짜><시간> spid * 식:! " 이 코드에서 예외가 발생 "
<ID> <날짜><시간> spid * SPID: <ID>
<ID> <날짜><시간> spid * 프로세스 ID: 3556
<Date> <Time> spid<ID> *
<ID> <날짜><시간> spid * 입력 버퍼 37 바이트-
<ID> <날짜><시간> spid * 16 00 00 00 12 00 00 00 02 00 00 00 00 00 00 00 00 00
<ID> <날짜><시간> spid * ÿ ÿ & 01 00 00 00 ff ff 0 c 00 00 00 00 00 26 04 04 05 00 00
<ID> <날짜><시간> spid * 00
<Date> <Time> spid<ID> *
<Date> <Time> spid<ID> *
...
<날짜><시간> spid <ID> 서명 스택 덤프에 대 한 0x000000014202549F가
<날짜><시간> spid <ID> [INFO] Identity 시작 종료 | 상태 결과 오류 추측 준비 된 LazyCommit 읽기 전용 | 트랜잭션 데이터베이스 ThreadId | ReadSet WriteSet ScanSet 저장점 LogSizeRq | CommitDep TotalComm 종속 0 종속 1 종속 2 종속 3 종속 4 종속 5 종속 6 종속 7 | 영역 위치 |
<날짜><시간> spid 외부 덤프 프로세스 11800 대기 <ID> 시간 초과 됩니다.
<날짜><시간> spid <ID> 오류: 17066, 심각도: 16, 상태: 1.
<날짜><시간> spid <ID> SQL Server 어설션: 파일: < qxcntxt.cpp > 선 1143 실패 어설션 = = '! " 이 코드에서 예외가 발생 해야"'. 이 오류는 타이밍과 관련될 수 있습니다. 다음 문을 다시 실행한 후 오류가 계속 발생하는 경우 DBCC CHECKDB를 사용하여 데이터 베이스의 구조적 무결성을 검사하거나 서버를 다시 시작하여 메모리 데이터 구조가 손상되지 않았는지 확인합니다.
해결 방법
누적 업데이트 정보
문제는 SQL Server 다음 누적 업데이트에 처음 수정 되었습니다.
SQL Server용 각각의 새로운 누적 업데이트는 모이전 누적 업데이트에 포함된 모든 핫픽스 및 보안 수정 프로그램을 포함합니다. SQL Server용 최신 누적 업데이트를 다운로드하고 설치하는 것이 좋습니다.
상태
Microsoft는 이 문제가 '적용 대상' 섹션에 나열된 Microsoft 제품의 문제임을 확인했습니다.