# 버그: 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+0x69
sqlmin!CMainIlb::{dtor}+0x3d sqlmin!CMainIlb::`scalar deleting destructor'+0x3d sqlmin!CBlobHandleFactoryMain::ReleaseILockBytes+0x13 sqlmin!CMainIlb::Release+0xf0 sqllang!CTraceRpcBinaryStream::~CTraceRpcBinaryStream+0x80 sqllang!CTraceTvpData::{dtor}+0x14 sqllang!CTraceTvpData::`scalar deleting destructor'+0x1e sqllang!CRpcTraceHelper::CleanUpTraceTvpData+0x33 sqllang!CRpcTraceHelper::~CRpcTraceHelper+0x70 sqllang!CRPCExecEnv::~CRPCExecEnv+0x2ab sqllang!CRPCExecEnv::`scalar deleting destructor'+0x14 sqllang!process_request+0x10b1 sqllang!process_commands+0x51c sqldk!SOS_Task::Param::Execute+0x21e sqldk!SOS_Scheduler::RunTask+0xa8 sqldk!SOS_Scheduler::ProcessTasks+0x299 sqldk!SchedulerManager::WorkerEntryPoint+0x261 sqldk!SystemThread::RunWorker+0x8f sqldk!SystemThreadDispatcher::ProcessWorker+0x3c8 sqldk!SchedulerManager::ThreadEntryPoint+0x236 kernel32!BaseThreadInitThunk+0xd ntdll!RtlUserThreadStart+0x1d
sqlmin!CLinkedMap<__int64,CCheckReadersAndWriters::CCounts>::FDelete+0x34sqlmin!CCheckReadersAndWriters::Release+0xfb
sqlmin!CMainIlb::{dtor}+0x3d sqlmin!CMainIlb::`scalar deleting destructor'+0x3d sqlmin!CBlobHandleFactoryMain::ReleaseILockBytes+0x13 sqlmin!CMainIlb::Release+0xf0 sqllang!CTraceRpcBinaryStream::~CTraceRpcBinaryStream+0x80 sqllang!CTraceTvpData::{dtor}+0x11 sqllang!CRpcTraceHelper::CleanUpTraceTvpData+0x55 sqllang!CRpcTraceHelper::TracePostExec+0x1bf sqllang!CRPCExecEnv::OnExecFinish+0xaa sqllang!CProtocolHeaderInfo::{dtor}+0xffffffff`ffb158e2 sqllang!process_request+0x764 sqllang!process_commands+0x51c sqldk!SOS_Task::Param::Execute+0x21e sqldk!SOS_Scheduler::RunTask+0xa8 sqldk!SOS_Scheduler::ProcessTasks+0x29a sqldk!SchedulerManager::WorkerEntryPoint+0x261 sqldk!SystemThread::RunWorker+0x8f sqldk!SystemThreadDispatcher::ProcessWorker+0x3c8 sqldk!SchedulerManager::ThreadEntryPoint+0x236 kernel32!BaseThreadInitThunk+0x1a ntdll!RtlUserThreadStart+0x1d
상태
Microsoft는 이 문제가 '적용 대상' 섹션에 나열된 Microsoft 제품의 문제임을 확인했습니다.
Author: jannaw
Writer: v-yipli 기술 검토: pradm; jannaw; hozhan Editor: v-mordew