Microsoft로 로그인
로그인하거나 계정을 만드세요.
안녕하세요.
다른 계정을 선택하세요.
계정이 여러 개 있습니다.
로그인할 계정을 선택하세요.

# 버그: 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

추가 도움이 필요하신가요?

기술 향상
교육 살펴보기
새로운 기능 우선 가져오기
Microsoft Insider 참가

이 정보가 유용한가요?

언어 품질에 얼마나 만족하시나요?
사용 경험에 어떠한 영향을 주었나요?

의견 주셔서 감사합니다!

×