증상
Microsoft SQL Server에서 다음을 수행 하는 저장 프로시저를 반복적으로 실행할 때 어설션 오류가 발생할 수 있습니다.
-
Varchar (max) 또는 varbinary (max)와 같은 큰 개체를 인수로 가져와
-
프로시저 실행으로 범위가 지정 된 임시 테이블을 만들고
-
임시 테이블에 대형 개체 인수를 사용 합니다.
SQL Server 오류 로그에 다음과 유사한 어설션 오류가 발생할 수 있습니다.
날짜/시간 SPID 오류: 17065, 심각도: 16, 상태: 1.
날짜/시간 SPID SQL Server Assertion: File: FilePath \FileName, line = LineNumber Failed Assertion = ' fFalse ' 만료 된 blob 핸들에 액세스 하려고 시도 합니다 (1). 이 오류는 타이밍과 관련 된 것일 수 있습니다. 문을 다시 실행 한 후에도 오류가 계속 발생 하는 경우 DBCC CHECKDB를 사용 하 여 데이터베이스의 구조적 무결성을 확인 하거나 서버를 다시 시작 하 여 메모리 내 데이터 구조가 손상 되지 않았는지 확인 합니다.
날짜/시간 SPID 오류: 3624, 심각도: 20, 상태: 1.
날짜/시간 SPID 시스템 어설션 검사에 실패 했습니다. 자세한 내용은 SQL Server 오류 로그를 확인 하세요. 일반적으로 어설션 오류는 소프트웨어 버그 또는 데이터 손상으로 인해 발생 합니다. 데이터베이스가 손상 되었는지 확인 하려면 DBCC CHECKDB를 실행 하는 것이 좋습니다. 설치 하는 동안 Microsoft에 덤프를 보내려고 동의한 경우 미니 덤프가 Microsoft로 전송 됩니다. 최신 서비스 팩 또는 기술 지원의 핫픽스에 대 한 업데이트가 Microsoft에서 제공 될 수 있습니다.
원인
SQL Server에는 이전 실행 중에 만들어졌으며 이후 실행에 유효 하지 않은 후속 실행이 해당 LOBs를 참조 하지 않도록 대형 개체를 참조 하는 쿼리 캐싱을 사용 하지 않도록 하는 내부 논리가 있습니다. 해당 논리는 해당 계획을 캐시 한 임시 테이블에서 DNR ( 지연 된 이름 확인 )의 대/소문자를 처리 하지 않습니다. 범위 임시 테이블은 만들기에 비용이 많이 들고, 이후 실행에서 다시 사용할 수 있도록 SQL Server가 캐시 합니다. 이렇게 하면 스키마 변경으로 인해 이러한 쿼리를 다시 컴파일하지 않도록 할 수 있습니다.
지연 된 이름 확인에 대해 자세히 알아보세요.
해결 방법
이 문제는 다음과 같은 SQL Server 누적 업데이트에서 해결 되었습니다.
SQL Server 2016 SP1 용 누적 업데이트 8
SQL Server 2014 서비스 팩 2 용 누적 업데이트 10
새 SQL Server 누적 업데이트에는 이전 빌드에 있던 모든 핫픽스와 보안 수정 사항이 포함 되어 있습니다. 최신 SQL Server 누적 업데이트를 확인 하세요.
SQL Server 2014의 최신 누적 업데이트
상태
Microsoft는 "적용 대상" 절에 나열한 제품에서 이 문제를 확인했습니다.
참조
Microsoft에서 소프트웨어 업데이트를 설명 하는 데 사용 하는 용어 에 대해 알아봅니다.