Bagikan melalui


Memverifikasi tabel ledger untuk mendeteksi perubahan

Berlaku untuk: SQL Server 2022 (16.x) dan versi yang lebih baru Azure SQL DatabaseAzure SQL Managed Instance

Dalam artikel ini, Anda akan memverifikasi integritas data dalam tabel ledger Anda. Jika Anda telah mengonfigurasi penyimpanan ringkasan otomatis pada database Anda, ikuti bagian T-SQL menggunakan penyimpanan ringkasan otomatis. Jika tidak, ikuti bagian T-SQL yang menggunakan digest yang dihasilkan secara manual.

Prasyarat

Menjalankan verifikasi ledger untuk database

  1. Sambungkan ke database Anda dengan menggunakan SQL Server Management Studio.

  2. Buat kueri baru dengan pernyataan Transact-SQL berikut:

    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
    

    Catatan

    Skrip verifikasi juga dapat ditemukan di portal Azure. Buka portal Azure dan temukan database yang ingin Anda verifikasi. Di Keamanan, pilih opsi Ledger. Di panel Ledger , pilih </> Verifikasi database.

  3. Mengeksekusi kueri. Anda akan melihat bahwa digest_locations mengembalikan lokasi saat ini di mana digest database Anda disimpan dan juga lokasi-lokasi sebelumnya. Hasil mengembalikan keberhasilan atau kegagalan verifikasi ledger.

    Cuplikan layar saat menjalankan verifikasi ledger dengan menggunakan Azure Data Studio.

  4. Buka hasil digest_locations yang diset untuk melihat lokasi digest Anda. Contoh berikut menunjukkan dua lokasi penyimpanan digest untuk database ini:

    • jalur menunjukkan lokasi ringkasan.

    • last_digest_block_id menandakan ID blok dari digest terakhir yang disimpan di lokasi path.

    • is_current menunjukkan apakah lokasi di jalur adalah lokasi saat ini (benar) atau sebelumnya (salah).

      [
       {
           "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
       }
      ]
      

    Penting

    Saat Anda menjalankan verifikasi ledger, periksa lokasi lokasi_ringkasan untuk memastikan ringkasan yang digunakan dalam verifikasi diambil dari lokasi yang Anda harapkan. Anda ingin memastikan bahwa pengguna istimewa belum mengubah lokasi penyimpanan ringkasan ke lokasi penyimpanan yang tidak terlindungi, seperti Azure Storage, tanpa adanya kebijakan kekekalan yang sudah dikonfigurasi dan dikunci.

  5. Verifikasi mengembalikan pesan berikut di jendela Hasil.

    • Jika tidak ada pengubahan dalam database Anda, pesannya adalah:

      Ledger verification successful
      
    • Jika ada perubahan dalam database Anda, kesalahan berikut akan muncul di jendela Pesan:

      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.