Applies ToSQL Server 2012 Developer SQL Server 2012 Enterprise SQL Server 2012 Standard

# 버그: 187868 (콘텐츠 유지 관리)VSTS: 1340145

Microsoft 다운로드 한 파일에 Microsoft SQL Server 2012 수정 프로그램을 배포합니다. 수정 프로그램은 계속 누적 되는 형태 이므로 각 새 릴리스의 모든 핫픽스와 들어 및 이전 SQL Server 2012에 포함 된 모든 보안 업데이트 릴리스를 업데이트 합니다.

증상

다음 시나리오를 고려하십시오.

  • Microsoft SQL Server 2012에서 테이블 반환 매개 변수 (TVP)를 사용 하는 저장된 프로시저 만들기

  • SQL 프로필러 또는 SQL Server 확장 이벤트를 캡처하는 데 사용할 해당 RPC: 시작 및 RPC: 완료 이벤트입니다.

  • TVP는 사용 하는 쿼리를 실행 합니다.

  • 쿼리 시간이 초과 되었습니다.

이 시나리오에서는 응답 하지 않는 스케줄러 오류가 발생 한 및 동일한 스케줄러에서 실행 되는 쿼리를 느리게 실행 합니다. 또한 미니 덤프 파일은 SQL Server 로그 폴더에 생성 됩니다.이 문제가 발생 하면 다음과 유사한 오류 메시지가 나타납니다.

System.Data.SqlClient.SqlException (0x80131904): 제한 시간이 만료 되었습니다. 작업을 완료 하기 전에 제한 시간이 경과 하거나 서버가 응답 하지 않습니다.System.Data.SqlClient.SqlInternalConnection.OnError (SqlException 예외, 부울 breakConnection)에at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning()System.Data.SqlClient.TdsParserStateObject.ReadSniError (TdsParserStateObject stateObj, UInt32 오류)에System.Data.SqlClient.TdsParserStateObject.ReadSni (asyncResult DbAsyncResult, TdsParserStateObject stateObj)에서System.Data.SqlClient.TdsParserStateObject.ReadNetworkPacket()에서System.Data.SqlClient.TdsParserStateObject.ReadByte()에서System.Data.SqlClient.TdsParser.Run (RunBehavior runBehavior, cmdHandler SqlCommand, SqlDataReader 데이터 스트림, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)에서System.Data.SqlClient.SqlCommand.FinishExecuteReader (SqlDataReader ds, RunBehavior runBehavior, resetOptionsString 문자열)에System.Data.SqlClient.SqlCommand.RunExecuteReaderTds (CommandBehavior cmdBehavior, RunBehavior runBehavior, returnStream 부울, 부울 비동기)에System.Data.SqlClient.SqlCommand.RunExecuteReader (CommandBehavior cmdBehavior, RunBehavior runBehavior, returnStream Boolean, String 메서드와 DbAsyncResult 결과)에System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery (DbAsyncResult 결과, methodName 문자열, 부울 sendToPipe)에System.Data.SqlClient.SqlCommand.ExecuteNonQuery()에서TVPApp.Program.Main (String args)에

다음과 유사한 오류 메시지와 함께 응답 하지 않는 스케줄러 오류 SQL Server 오류 로그에 기록 됩니다.

< 날짜 >< 시간 > 서버를 사용 하 여 'dbghelp.dll' 버전 '4.0.5'서버 시간 > < 날짜 >< * * * spid에 대 한 스레드 컨텍스트를 가져올 수 없음 #<Date><Time> Server * *******************************************************************************< 날짜 >< 시간 > 서버 *< 날짜 >< 시간 > 서버 * 시작 스택 덤프:< 날짜 >< 시간 > 서버 * < 날짜 >< 시간 > spid #< 날짜 >< 시간 > 서버 *< 날짜 >< 시간 > 서버 * 응답 하지 않는 스케줄러< 날짜 >< 시간 > 서버 *<Date><Time> Server * *******************************************************************************< 날짜 >< 시간 > 서버 스택 덤프 서명 0x000000000000002C입니다.< 날짜 >< 시간 > 서버 외부 덤프 프로세스 반환 코드 0x20000001.외부 덤프 프로세스 없음 오류를 반환 했습니다.< 날짜 >< 시간 > 서버 프로세스 0:0:0 (0x1670) 작업자 0x0000000004EDE160 5 스케줄러 응답 하지 않는 것 같습니다. 스레드 생성 시간: 13014210386757. 약 스레드 CPU 사용 된: 커널 0 ms 사용자 70106 ms. 프로세스 사용률이 16%. 시스템 유휴 77%. 간격: 70140 ms입니다.< 날짜 >< 시간 > 서버 프로세스 0:0:0 (0x1670) 작업자 0x0000000004EDE160 5 스케줄러 응답 하지 않는 것 같습니다. 스레드 만든 시간:

원인

SQL Server 2012 데이터베이스 엔진 오류로 인해이 문제가 발생합니다. 문자열 또는 버퍼를 삽입 텍스트 열에서 TVP에 구현 되 고 행 수가 증가 하는 버퍼 수를 늘립니다. 그러나 버퍼를 해제 하는 프로세스를 빨리 수행 됩니다. 따라서 응답 하지 않는 스케줄러 오류를 생성 해제 하 고 축소 작업 때 발생 합니다.참고: 비슷한 문제를 Microsoft 기술 자료의 다음 문서에서 해결 되었습니다. 그러나 누적 업데이트 패키지는이 문서에서 설명 하는 쿼리 시간 초과 문제가 없습니다.

2520808 수정: SQL 프로필러 또는 SQL Server 확장 이벤트를 사용 하는 경우 SQL Server 2008 또는 SQL Server 2008 r 2에서 TVP를 사용 하는 쿼리를 실행할 때 응답 하지 않는 스케줄러 오류

해결 방법

누적 업데이트 정보

SQL Server 2012 서비스 팩 1 (SP1) 용 누적 업데이트 패키지 5

이 문제를 해결은 누적 업데이트 5에서 먼저 릴리스 되었습니다. SQL Server 2012에 대 한이 누적 업데이트 패키지를 구하는 방법에 대 한 자세한 내용은 Microsoft 기술 자료의 다음 문서 번호를 클릭 합니다.

SQL Server 2012 용 2861107 누적 업데이트 패키지 5참고: 빌드는 계속 누적 되는 형태 이므로 각 새 수정 프로그램 릴리스의 모든 핫픽스와 들어 및 이전 SQL Server 2012에 포함 된 모든 보안 수정 프로그램 릴리스의 수정. 이 핫픽스가 포함 된 최신 수정 릴리스를 적용 고려 하는 것이 좋습니다. 자세한 내용은 다음 문서 번호를 클릭하여 Microsoft 기술 자료의 다음 문서를 확인하십시오.

SQL Server 2012 서비스 팩 1이 출시 된 이후에 릴리스된 2772858 은 SQL Server 2012 빌드

해결 방법

이 문제를 해결 하려면 다음 방법 중 하나를 사용 합니다.

  • SQL 프로필러 또는 SQL Server 확장 이벤트를 사용 하지 마십시오.

  • 선택을 취소 하는 RPC: 시작 및 RPC: 완료 추적 정의 확인란.

자세한 내용

이 기술 자료에서 게시 될 때 SQL Server 2008 또는 SQL Server 2008 r 2에이 수정 프로그램이 적용 되지 않습니다. 다음 문서에 설명 되어 있는 패키지를 적용 한 후 SQL Server 2008 또는 SQL Server 2008 r 2에서 같은 문제가 발생 하는 모든 사용자를 쿼리 시간 제한 하는 경우 유효성을 검사 하 고 제한 시간을 해결할 수 있는지. 그렇지 않으면 SQL Server 2008 또는 SQL Server 2008 r 2에이 수정 프로그램을 적용 하는 요청을 제출 합니다.

2520808 수정: SQL 프로필러 또는 SQL Server 확장 이벤트를 사용 하는 경우 SQL Server 2008 또는 SQL Server 2008 r 2에서 TVP를 사용 하는 쿼리를 실행할 때 응답 하지 않는 스케줄러 오류

호출 스택 정보

sqlmin!CLinkedMap<__int64,CCheckReadersAndWriters::CCounts>::FLookup+0x29sqlmin!CCheckReadersAndWriters::Release+0x69sqlmin!CMainIlb::{dtor}+0x3dsqlmin!CMainIlb::`scalar deleting destructor'+0x3dsqlmin!CBlobHandleFactoryMain::ReleaseILockBytes+0x13sqlmin!CMainIlb::Release+0xf0sqllang!CTraceRpcBinaryStream::~CTraceRpcBinaryStream+0x80sqllang!CTraceTvpData::{dtor}+0x14sqllang!CTraceTvpData::`scalar deleting destructor'+0x1esqllang!CRpcTraceHelper::CleanUpTraceTvpData+0x33sqllang!CRpcTraceHelper::~CRpcTraceHelper+0x70sqllang!CRPCExecEnv::~CRPCExecEnv+0x2absqllang!CRPCExecEnv::`scalar deleting destructor'+0x14sqllang!process_request+0x10b1sqllang!process_commands+0x51csqldk!SOS_Task::Param::Execute+0x21esqldk!SOS_Scheduler::RunTask+0xa8sqldk!SOS_Scheduler::ProcessTasks+0x299sqldk!SchedulerManager::WorkerEntryPoint+0x261sqldk!SystemThread::RunWorker+0x8fsqldk!SystemThreadDispatcher::ProcessWorker+0x3c8sqldk!SchedulerManager::ThreadEntryPoint+0x236kernel32!BaseThreadInitThunk+0xdntdll!RtlUserThreadStart+0x1d  
sqlmin!CLinkedMap<__int64,CCheckReadersAndWriters::CCounts>::FDelete+0x34sqlmin!CCheckReadersAndWriters::Release+0xfbsqlmin!CMainIlb::{dtor}+0x3dsqlmin!CMainIlb::`scalar deleting destructor'+0x3dsqlmin!CBlobHandleFactoryMain::ReleaseILockBytes+0x13sqlmin!CMainIlb::Release+0xf0sqllang!CTraceRpcBinaryStream::~CTraceRpcBinaryStream+0x80sqllang!CTraceTvpData::{dtor}+0x11sqllang!CRpcTraceHelper::CleanUpTraceTvpData+0x55sqllang!CRpcTraceHelper::TracePostExec+0x1bfsqllang!CRPCExecEnv::OnExecFinish+0xaasqllang!CProtocolHeaderInfo::{dtor}+0xffffffff`ffb158e2sqllang!process_request+0x764sqllang!process_commands+0x51csqldk!SOS_Task::Param::Execute+0x21esqldk!SOS_Scheduler::RunTask+0xa8sqldk!SOS_Scheduler::ProcessTasks+0x29asqldk!SchedulerManager::WorkerEntryPoint+0x261sqldk!SystemThread::RunWorker+0x8fsqldk!SystemThreadDispatcher::ProcessWorker+0x3c8sqldk!SchedulerManager::ThreadEntryPoint+0x236kernel32!BaseThreadInitThunk+0x1antdll!RtlUserThreadStart+0x1d 

상태

Microsoft는 이 문제가 '적용 대상' 섹션에 나열된 Microsoft 제품의 문제임을 확인했습니다.

Author: jannawWriter: v-yipli기술 검토: pradm; jannaw; hozhanEditor: v-mordew

도움이 더 필요하세요?

더 많은 옵션을 원하세요?

구독 혜택을 살펴보고, 교육 과정을 찾아보고, 디바이스를 보호하는 방법 등을 알아봅니다.

커뮤니티를 통해 질문하고 답변하고, 피드백을 제공하고, 풍부한 지식을 갖춘 전문가의 의견을 들을 수 있습니다.