Delen via


Een grootboektabel controleren om manipulatie te detecteren

van toepassing op: SQL Server 2022 (16.x) Azure SQL DatabaseAzure 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

Grootboekverificatie uitvoeren voor de database

  1. Maak verbinding met uw database met behulp van SQL Server Management Studio of Azure Data Studio.

  2. 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.

  3. 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.

    schermopname van het uitvoeren van grootboekverificatie met behulp van Azure Data Studio.

  4. 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.

  5. 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.