sys.sp_verify_database_ledger(Transact-SQL)
적용 대상: SQL Server 2022(16.x) Azure SQL 데이터베이스 Azure SQL Managed Instance
데이터베이스 원장 및 테이블 원장을 확인합니다. 보기의 각 행에 sys.database_ledger
대해 저장 프로시저는 다음과 같습니다.
- 행의 previous_block_hash 열에 저장된 값을 다시 계산합니다.
- 다시 계산된 값이 현재 previous_block_hash 열에 저장된 값과 일치하는지 확인합니다.
- 지정된 다이제스트 목록에 행이 나타내는 원장 블록에 대한 다이제스트가 포함된 경우 다시 계산된 값이 다이제스트의 해시와 일치하는지 확인합니다.
- 인수를 사용하여
table_name
원장 테이블 이름을 지정하는 경우 저장 프로시저는 지정된 테이블에 대한 테이블 해시가 table_hashes 열sys.database_ledger
에 있는지 확인합니다. 그렇지 않으면 존재하지 않는(삭제된) 테이블에 대한 테이블 해시를 제외하고 table_hashes 열sys.database_ledger
에 존재하는 모든 테이블 해시를 확인합니다. 원장 테이블에 대한 테이블 해시를 확인할 때 저장 프로시저는 다음과 같습니다.- 원장 테이블의 기록 테이블을 스캔하여 원장 테이블의 현재 행
sys.database_ledger
이 나타내는 트랜잭션으로 업데이트된 모든 행의 해시인 테이블 해시를 다시 계산합니다. - 다시 계산된 테이블 해시가 지정된 원장 테이블의
sys.database_ledger
table_hashes 열에 저장된 값과 일치하는지 확인합니다.
- 원장 테이블의 기록 테이블을 스캔하여 원장 테이블의 현재 행
또한 저장 프로시저는 모든 비클러스터형 인덱스가 지정된 원장 테이블과 일치하는지 확인합니다. 원장 테이블이 지정되지 않은 경우 모든 행 sys.database_ledger
의 table_hashes 열에서 참조되는 각 기존 원장 테이블에 대한 모든 비클러스터형 인덱스를 확인합니다.
데이터베이스 원장에 관한 자세한 내용은 원장을 참조하세요.
구문
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개
사용 권한
원장 콘텐츠 보기 권한이 필요합니다.