Een grootboektabel controleren om manipulatie te detecteren
van toepassing op: SQL Server 2022 (16.x)
Azure SQL Database
Azure SQL Managed Instance
In dit artikel controleert u de integriteit van de gegevens in uw grootboektabellen. Als u de Automatische digest-opslag hebt geconfigureerd in uw database, volgt u de T-SQL met behulp van automatische digest-opslag sectie. Volg anders de T-SQL met behulp van een handmatig gegenereerde samenvattingssectie.
Benodigdheden
- Een actief Azure-abonnement hebben als u Azure SQL Database of Azure SQL Managed Instance gebruikt. Maak een gratis account aan als u er nog geen hebt, .
- Groteboektabellen maken en gebruiken of alleen toevoegbare grootboektabellen maken en gebruiken.
- SQL Server Management Studio of Azure Data Studio.
- De databaseoptie ALLOW_SNAPSHOT_ISOLATION moet op de database ingeschakeld zijn voordat u de opgeslagen verificatieprocedures kunt uitvoeren.
Grootboekverificatie uitvoeren voor de database
- T-SQL met behulp van automatische digest-opslag
- T-SQL met behulp van een handmatig gegenereerde samenvatting
Maak verbinding met uw database met behulp van SQL Server Management Studio of Azure Data Studio.
Maak een nieuwe query met de volgende T-SQL-instructie:
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 CATCH
Notitie
Het verificatiescript is ook te vinden in Azure Portal. Open de Azure Portal en zoek de database die u wilt verifiëren. Selecteer de optie Grootboek in Security. Selecteer in het deelvenster Grootboek</> Database controleren.
Voer de query uit. U ziet dat digest_locations de huidige locatie retourneert waar uw databasesamenvatten worden opgeslagen en eventuele eerdere locaties. Resultaat geeft als resultaat het slagen of mislukken van grootboekverificatie.
Open de digest_locations resultatenset om de locaties van uw digests weer te geven. In het volgende voorbeeld ziet u twee opslaglocaties voor digest voor deze database:
pad geeft de locatie van de samenvattingen aan.
last_digest_block_id geeft de blok-ID aan van de laatste samenvatting die is opgeslagen in de padlocatie .
is_current geeft aan of de locatie in pad de huidige (waar) of vorige (onwaar) is.
[ { "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 } ]
Belangrijk
Wanneer u grootboekverificatie uitvoert, controleert u de locatie van digest_locations om ervoor te zorgen dat samenvattingen die worden gebruikt bij verificatie worden opgehaald van de locaties die u verwacht. U wilt ervoor zorgen dat een bevoegde gebruiker de locaties van de digest-opslag niet heeft gewijzigd in een niet-beveiligde opslaglocatie, zoals Azure Storage, zonder geconfigureerd en vergrendeld onveranderbaarheidsbeleid.
Verificatie retourneert het volgende bericht in het venster Resultaten.
Als er geen manipulatie in uw database is, is het bericht:
Ledger verification successful
Als er sprake is van manipulatie in uw database, wordt de volgende fout weergegeven in het venster Berichten:
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.