read_only 파일 그룹의 Columnstore 색인으로 CheckDB가 방지 됨


15

파일 그룹에 columnstore 인덱스가 포함 된 경우 전체 데이터베이스 를 read_only방지 dbcc checkdb하기 위해 파일 그룹을 설정하는 것으로 나타납니다 . checkdb또는 checkfilegroup( 읽기-쓰기 보조를 포함하여 데이터베이스의 모든 파일 그룹에 대해)[PRIMARY] 을 실행하려고 하면 아래 오류가 반환됩니다.

Msg 8921, Level 16, State 1, Line 24
Check terminated. A failure was detected while collecting facts. 
Possibly tempdb out of space or a system table is inconsistent. Check previous errors.

읽기 전용 파일 그룹에 columnstore 데이터를 지원하는 방법이 있습니까? 아니면이 시나리오에서 무결성 검사가 금지됩니까?

재현

create database check_fg_ro
go
use check_fg_ro
go
exec sp_changedbowner 'sa';
go
alter database check_fg_ro add filegroup check_fg_ro_2;
alter database check_fg_ro
    add file (
         name='check_fg_ro_2'
        ,filename='C:\check_fg_ro_2.ndf'
    ) to filegroup check_fg_ro_2;
go
create table foo ( 
    i int not null primary key
) on check_fg_ro_2;
go
create columnstore index ccix_foo on foo(i);
go
use master
go
alter database check_fg_ro modify filegroup check_fg_ro_2 read_only;
go
dbcc checkdb( check_fg_ro ) with no_infomsgs, all_errormsgs, extended_logical_checks;
/*
Msg 8921, Level 16, State 1, Line 24
Check terminated. A failure was detected while collecting facts. 
Possibly tempdb out of space or a system table is inconsistent. Check previous errors.
*/
go

면책 조항 : technet 포럼에 교차 게시

답변:


12

DBCC가 읽기 전용 columnstore 테이블에 대해 삭제 된 비트 맵을 확인하려고하면 문제가 발생합니다.

삭제 된 비트 맵은 columnstore 테이블과 동일한 파일 그룹에 저장됩니다. 압축 된 행 그룹에서 논리적으로 삭제 된 행을 추적합니다.

내가 알 수있는 한 모든 것이 내부 시스템 테이블 (SQL Server 2017 CU3)에서 올바르게 구성되며 대부분의 DBCC 코드는 열 저장소 삭제 비트 맵을 보유하는 숨겨진 행 집합을 올바르게 설명합니다.

어떤 이유로 오프라인 또는 읽기 전용 파일 그룹을 검사하면 처리되지 않은 예외가 발생합니다.

콜 스택

Msg 8921, Level 16, State 1, Line 69
Check terminated. A failure was detected while collecting facts.
Possibly tempdb out of space or a system table is inconsistent.
Check previous errors.

동일한 오프라인 / 읽기 전용 검사는 DBCC 처리 (사실이 수집 될 때)에서 여러 번 더 일찍 수행됩니다.

파일 그룹에서 DBCC CHECKDB또는 DBCC FILEGROUP실행 중이 거나 DBCC CHECKTABLE특정 읽기 전용 columnstore 테이블을 확인하라는 메시지 가 표시 될 때 문제가 발생 합니다. 이들 중 어느 것도 나머지 DBCC 검사 실행을 방해하는 치명적인 오류 조건을 생성하지 않아야하므로 버그 여야합니다.


아니면이 시나리오에서 무결성 검사가 금지됩니까?

이 문제를 해결 DBCC CHECKFILEGROUP하려면 columnstore 파일 그룹을 읽기 전용으로 만들거나 바로 실행 하기 직전에 실행하십시오 DBCC CHECKDB.

  1. DBCC CHECKALLOC 데이터베이스에서
  2. 운영 DBCC CHECKCATALOG
  3. DBCC CHECKTABLE각 테이블에 대해 실행 (읽기 전용 파일 그룹에서 columnstore 테이블 제외)
  4. 당신은 또한 실행할 수 있습니다 DBCC CHECKCONSTRAINTS.

참조 일관성이 VLDB에 대한 옵션 확인 폴 랜달과 Q & A에 의한 여러 일 동안 나누 DBCC CHECKDB를 .


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.