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 v databázi nakonfigurujete automatické ukládání digest, postupujte podle pokynů v části T-SQL využívající automatické ukládání digest. V opačném případě postupujte podle části T-SQL pomocí ručně generovaného souhrnu.
Požadavky
- Aktivní předplatné Azure, pokud používáte Azure SQL Database nebo Azure SQL Managed Instance. 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.
- Před spuštěním uložených procedur ověřování povolte v databázi možnost ALTER DATABASE SET (Transact-SQL).
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 AS NVARCHAR (MAX) = (SELECT * FROM sys.database_ledger_digest_locations FOR JSON AUTO, INCLUDE_NULL_VALUES); SELECT @digest_locations AS digest_locations; BEGIN TRY EXECUTE 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ě Ledger vyberte Ověřit databázi.
Spusťte dotaz. Uvidíte, že
digest_locationsvrátí aktuální umístění, kde jsou uloženy souhrny 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ů 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:
pathoznačuje umístění hodnot hash.last_digest_block_idoznačuje ID bloku posledního uloženého souhrnu v umístěnípath.is_currenturčuje, zda je umístěnípathaktuální (true) nebo předchozí (false).[ { "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é
Když spustíte ověření registru, zkontrolujte umístění
digest_locationsa ujistěte se, že se digesty použité při ověření načítají z očekávaných míst. Ujistěte se, že privilegovaný uživatel nezmění umístění úložiště digest na nechráněné umístění úložiště, jako je Azure Storage, bez nakonfigurované a uzamčené zásady neměnnosti.V okně Výsledky vrátí ověření následující zprávu.
Pokud v databázi není žádná manipulace, zobrazí se zpráva:
Ledger verification successfulPokud v databázi dojde 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.