다음을 통해 공유


temporal 테이블 시스템 일관성 확인

적용 대상: SQL Server 2016(13.x) 이상 Azure SQL 데이터베이스 Azure SQL Managed Instance

temporal 테이블을 사용하는 경우 시스템은 다양한 일관성 확인을 수행하여 스키마가 temporal 요구 사항에 따라 컴파일되고 데이터가 일관적이며 일관성을 유지함을 보장할 수 있습니다. 또한 temporal 검사는 DBCC CHECKCONSTRAINTS 문에서 사용할 수 있습니다.

시스템 일관성 확인

SYSTEM_VERSIONINGON으로 설정하기 전에 기록 테이블 및 현재 테이블에서 일련의 검사가 수행됩니다. 이러한 검사는 스키마 검사 및 데이터 검사로 그룹화됩니다(기록 테이블이 비어 있지 않은 경우). 또한, 시스템은 런타임 일관성 확인을 수행합니다.

스키마 검사

temporal 테이블을 만들거나 테이블을 변경하여 temporal 테이블로 변경할 때 시스템은 다음 요구 사항의 충족 여부를 확인합니다.

  1. 열 이름 및 개수가 현재 테이블 및 기록 테이블에서 동일합니다.

  2. 데이터 유형이 현재 테이블과 기록 테이블 사이에 있는 각 열에 일치합니다.

  3. 기간 열이 NOT NULL로 설정됩니다.

  4. 현재 테이블에 기본 키 제약 조건이 있고 기록 키에 기본 키 제약 조건이 없습니다.

  5. 기록 테이블에는 IDENTITY 열이 정의되지 않습니다.

  6. 기록 테이블에는 트리거가 정의되지 않습니다.

  7. 기록 테이블에는 외래 키가 정의되지 않습니다.

  8. 기록 테이블에는 테이블 또는 열 제약 조건이 정의되지 않습니다. 그러나 기록 테이블의 기본 열 값은 허용되지 않습니다.

  9. 기록 테이블은 읽기 전용 파일 그룹에 배치되지 않습니다.

  10. 기록 테이블은 변경 추적 또는 변경 데이터 캡처를 위해 구성되지 않습니다.

데이터 일관성 확인

SYSTEM_VERSIONINGON으로 설정하고 DML(데이터 조작 언어) 작업의 일부로 설정하기 전에 시스템은 ValidTo >= ValidFrom 확인을 수행합니다.

기존 기록 테이블에 대한 링크를 만드는 경우 데이터 일관성 확인을 수행하도록 선택할 수 있습니다. 이 데이터 일관성 확인은 기존 레코드가 겹치지 않고 모든 개별 레코드에서 temporal 요구 사항이 충족되는지 확인합니다. 기본값은 데이터 일관성 확인을 수행하는 것입니다. 일반적으로 기록 데이터로 채워지는 기존 기록 테이블을 통합하는 경우와 같이 현재 테이블과 기록 테이블 사이에서 데이터 동기화가 이루어지지 않을 때마다 데이터 일관성 확인을 수행해야 합니다.

경고

시스템 클록을 수동으로 변경하면 예기치 않게 시스템이 실패할 수 있습니다. 이는 겹침 조건(즉, 레코드의 종료 시간이 시작 시간보다 작지 않아야 함)을 방지하기 위한 런타임 데이터 일관성 확인이 실패하기 때문입니다.

DBCC CHECKCONSTRAINTS 사용

DBCC CHECKCONSTRAINTS 명령에는 temporal 데이터 일관성 확인이 포함됩니다. 자세한 내용은 DBCC CHECKCONSTRAINTS를 참조하세요.