다음을 통해 공유


sys.sp_verify_database_ledger(Transact-SQL)

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

데이터베이스 원장 및 테이블 원장을 확인합니다. 보기의 각 행에 sys.database_ledger 대해 저장 프로시저는 다음과 같습니다.

  1. 행의 previous_block_hash 열에 저장된 값을 다시 계산합니다.
  2. 다시 계산된 값이 현재 previous_block_hash 열에 저장된 값과 일치하는지 확인합니다.
  3. 지정된 다이제스트 목록에 행이 나타내는 원장 블록에 대한 다이제스트가 포함된 경우 다시 계산된 값이 다이제스트의 해시와 일치하는지 확인합니다.
  4. 인수를 사용하여 table_name 원장 테이블 이름을 지정하는 경우 저장 프로시저는 지정된 테이블에 대한 테이블 해시가 table_hashes 열 sys.database_ledger에 있는지 확인합니다. 그렇지 않으면 존재하지 않는(삭제된) 테이블에 대한 테이블 해시를 제외하고 table_hashes 열 sys.database_ledger에 존재하는 모든 테이블 해시를 확인합니다. 원장 테이블에 대한 테이블 해시를 확인할 때 저장 프로시저는 다음과 같습니다.
    1. 원장 테이블의 기록 테이블을 스캔하여 원장 테이블의 현재 행 sys.database_ledger 이 나타내는 트랜잭션으로 업데이트된 모든 행의 해시인 테이블 해시를 다시 계산합니다.
    2. 다시 계산된 테이블 해시가 지정된 원장 테이블의 sys.database_ledger table_hashes 열에 저장된 값과 일치하는지 확인합니다.

또한 저장 프로시저는 모든 비클러스터형 인덱스가 지정된 원장 테이블과 일치하는지 확인합니다. 원장 테이블이 지정되지 않은 경우 모든 행 sys.database_ledger의 table_hashes 열에서 참조되는 각 기존 원장 테이블에 대한 모든 비클러스터형 인덱스를 확인합니다.

데이터베이스 원장에 관한 자세한 내용은 원장을 참조하세요.

Transact-SQL 구문 표기 규칙

구문

sp_verify_database_ledger
    [ @digests = ] 'digests'
    [ , [ @table_name = ] 'table_name' ]

인수

[ @digests = ] ‘digests

각 항목은 뷰를 쿼리 sys.database_ledger_latest_digest 하여 가져온 트랜잭션 다이제스트 목록을 포함하는 JSON 문서입니다. JSON 문서에는 하나 이상의 다이제스트가 포함되어야 합니다.

[ @table_name = ] ‘table_name

확인하려는 테이블의 이름입니다.

반환 코드 값

0(성공) 또는 1(실패).

결과 집합

한 개의 열이 호출 last_verified_block_id된 행 1개

사용 권한

원장 콘텐츠 보기 권한이 필요합니다.