증상
다음과 같은 경우를 생각해 볼 수 있습니다.
-
Microsoft SQL Server 2012 또는 SQL Server 2014에서 스냅숏 격리 또는 Read Committed 스냅숏 격리 수준을 사용 하는 데이터베이스가 있는 경우
-
데이터베이스에 여러 열의 클러스터형 인덱스가 있는 비어 있지 않은 테이블이 포함 되어 있습니다. 클러스터형 인덱스의 선행 키가 NULL이 아닌값으로 설정 되어 있습니다.
-
트랜잭션을 시작 하 고 테이블에 열을 추가 합니다. 이 열의 값이 업데이트 됩니다.
-
NULL 값을 허용 하도록 클러스터형 인덱스의 선행 키를 변경 합니다.
-
클러스터형 인덱스의 선행 키에 대해 NULL 값이 있는 행을 삽입 한 다음 트랜잭션을 중단 합니다.
이 시나리오에서 롤백은 데이터베이스는 "복구 가능"으로 의심 되 고 DBCC CHECKDB REPAIR_ALLOW_DATA_LOSS 명령으로 발생 합니다. 또한 다음과 같은 오류 메시지가 나타날 수 있습니다.
메시지 3316, 수준 21, 상태 2, 데이터베이스 ' %1! '에 기록 된 작업을 실행 취소 하는 동안 줄 135 로그 레코드 ID% S_LSN에 오류가 발생 했습니다. 행을 찾을 수 없습니다. 전체 백업에서 데이터베이스를 복원 하거나 데이터베이스를 복구 합니다.
해결 방법
SQL Server 2014에 대 한 서비스 팩 정보
이 문제를 해결 하려면 SQL Server 2014에 대 한 서비스 팩 1을 구합니다.
SQL Server 2014 SP1(서비스 팩 1)에 대 한 자세한 내용은 Sql server 2014 서비스 팩 1에서 해결 된 버그를 참조 하세요.
SQL Server 2012에 대 한 서비스 팩 정보
이 문제를 해결 하려면 Microsoft SQL Server 2012의 최신 서비스 팩을 다운로드 하세요. 자세한 내용은 다음 문서 번호를 클릭 하 여 Microsoft 기술 자료 문서를 참조 하세요.
2755533 SQL Server 2012의 최신 서비스 팩을 구하는 방법
상태
Microsoft는 "적용 대상" 절에 나열한 Microsoft 제품에서 이 문제를 확인했습니다.