증상
Microsoft SQL Server Service Broker 사용하는 애플리케이션이 대화당 하나의 메시지 패턴으로 구성된 경우 tempdb 데이터 파일이 예기치 않게 증가합니다. 이 패턴은 일반적으로 애플리케이션 감사에 사용되는 "fire-and-forget" 패턴과 유사합니다.
이 문제가 발생하는 동안 sys.dm_db_task_space_usage DMV(동적 관리 뷰)를 쿼리하는 경우 내부 Service Broker 작업을 실행하는 세션 ID의 "internal_objects_alloc_page_count"과 동일한 속도로 "internal_objects_dealloc_page_count" 값이 증가하지 않는 것을 볼 수 있습니다.
또한 보류 중인 모든 대화가 닫혀 정리된 후에도 tempdb 공간이 해제되지 않습니다.
원인
데이터 파일의 증가는 주로 sys.sysdesend 테이블에 대한 상수 삽입 및 업데이트로 인해 발생합니다. 이 경우 Service Broker를 사용하면 tempdb 데이터 파일이 계속 증가합니다.
해결 방법
이 문제는 Microsoft SQL Server 2016에서 해결되었습니다.
누적 업데이트 정보
SQL Server 2012 SP3(서비스 팩 3)에 대한 누적 업데이트 5
SQL Server 2014 SP1의 누적 업데이트 10
SQL Server 2014 SP2의 누적 업데이트 3
SQL Server 대한 누적 업데이트 정보
SQL Server 대한 각각의 새로운 누적 업데이트에는 이전 누적 업데이트에 포함된 모든 핫픽스 및 모든 보안 수정 사항이 포함됩니다. SQL Server 대한 최신 누적 업데이트를 확인하세요.
SQL Server 2012 SP3에 대한 최신 누적 업데이트
SQL Server 2014 SP1/SP2에 대한 최신 누적 업데이트
추가 정보
tempdb에서 릴리스되지 않은 공간을 회수하려면 SQL Server 서비스를 다시 시작합니다.
이 문제를 방지하려면 다음 TechNet 항목의 "성능 및 확장성 기술" 섹션에 있는 일반적인 권장 사항을 따릅니다.
상태
Microsoft는 현재 Service Broker 디자인에서 알려진 문제임을 확인합니다.