Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Platí pro: SQL Server 2022 (16.x) a novější verze
Azure SQL Database
Azure SQL Managed Instance
V tomto článku ověříte integritu dat v tabulkách registru. Pokud jste ve své databázi nakonfigurovali automatické úložiště digest, postupujte podle oddílu T-SQL s použitím automatického úložiště digest. V opačném případě postupujte podle části T-SQL pomocí ručně generovaného souhrnu.
Požadavky
- Pokud používáte Azure SQL Database nebo Azure SQL Managed Instance, máte aktivní předplatné Azure. Pokud žádné nemáte, vytvořte si bezplatný účet.
- Vytvářejte a používejte aktualizovatelné tabulky registru nebo vytvářejte a používejte tabulky registru pouze pro připojení.
- SQL Server Management Studio.
- Možnost databáze ALLOW_SNAPSHOT_ISOLATION musí být v databázi povolená, než budete moct spustit uložené procedury ověření.
Proveďte ověření účetní knihy pro databázi
Připojte se k databázi pomocí aplikace SQL Server Management Studio.
Vytvořte nový dotaz s následujícím příkazem T-SQL:
DECLARE @digest_locations NVARCHAR(MAX) = (SELECT * FROM sys.database_ledger_digest_locations FOR JSON AUTO, INCLUDE_NULL_VALUES);SELECT @digest_locations as digest_locations; BEGIN TRY EXEC sys.sp_verify_database_ledger_from_digest_storage @digest_locations; SELECT 'Ledger verification succeeded.' AS Result; END TRY BEGIN CATCH THROW; END CATCHPoznámka:
Ověřovací skript najdete také na webu Azure Portal. Otevřete Azure Portal a vyhledejte databázi, kterou chcete ověřit. V části Zabezpečení vyberte možnost Ledger. V podokně Registru vyberte </> Ověřit databázi.
Spusťte dotaz. Uvidíte, že digest_locations vrátí aktuální umístění, kde jsou uloženy hodnoty hash databáze a všechna předchozí umístění. Výsledek vrátí úspěch nebo selhání ověření registru.
Otevřete sadu výsledků digest_locations a zobrazte umístění svých digestů. Následující příklad ukazuje dvě umístění úložiště digest pro tuto databázi:
cesta označuje umístění hodnot hash.
last_digest_block_id označuje ID bloku posledního digestu uloženého v umístění cesty .
is_current označuje, jestli je umístění na cestě současné (pravda) nebo předchozí (nepravdivé).
[ { "path": "https:\/\/digest1.blob.core.windows.net\/sqldbledgerdigests\/janderstestportal2server\/jandersnewdb\/2021-05-20T04:39:47.6570000", "last_digest_block_id": 10016, "is_current": true }, { "path": "https:\/\/jandersneweracl.confidential-ledger.azure.com\/sqldbledgerdigests\/janderstestportal2server\/jandersnewdb\/2021-05-20T04:39:47.6570000", "last_digest_block_id": 1704, "is_current": false } ]
Důležité
Při spuštění ověření registru zkontrolujte umístění digest_locations a ujistěte se, že se hodnoty hash použité při ověření načítají z očekávaných umístění. Chcete zajistit, aby privilegovaný uživatel nezměnil umístění úložiště digest na nechráněné umístění úložiště, jako je Azure Storage, bez nakonfigurovaných a uzamčených zásad neměnnosti.
V okně Výsledky vrátí ověření následující zprávu.
Pokud v databázi nedošlo k manipulaci, zpráva je následující:
Ledger verification successfulPokud v databázi došlo k manipulaci, zobrazí se v okně Zprávy následující chyba:
Failed to execute query. Error: The hash of block xxxx in the database ledger doesn't match the hash provided in the digest for this block.