Memverifikasi tabel ledger untuk mendeteksi perubahan
Berlaku untuk: SQL Server 2022 (16.x) Azure SQL DatabaseAzure SQL Managed Instance
Dalam artikel ini, Anda akan memverifikasi integritas data dalam tabel ledger Anda. Jika Anda telah mengonfigurasi penyimpanan Hash otomatis pada database Anda, ikuti T-SQL menggunakan bagian penyimpanan hash otomatis. Jika tidak, ikuti T-SQL menggunakan bagian hash yang dihasilkan secara manual.
Prasyarat
- Memiliki langganan Azure aktif jika Anda menggunakan Azure SQL Database atau Azure SQL Managed Instance. Jika Anda tidak memilikinya, buat akun gratis.
- Buat dan gunakan tabel ledger yang dapat diperbarui atau buat dan gunakan tabel ledger khusus tambahan.
- SQL Server Management Studio atau Azure Data Studio.
- Opsi database ALLOW_SNAPSHOT_ISOLATION harus diaktifkan pada database sebelum Anda bisa menjalankan prosedur tersimpan verifikasi.
Menjalankan verifikasi ledger untuk database
Sambungkan ke database Anda menggunakan SQL Server Management Studio atau Azure Data Studio.
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.
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.
Buka hasil digest_locations yang diset untuk melihat lokasi digest Anda. Contoh berikut menunjukkan dua lokasi penyimpanan digest untuk database ini:
jalur menunjukkan lokasi digest.
last_digest_block_id menunjukkan ID blok dari digest terakhir yang disimpan di lokasi jalur.
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 digest_locations untuk memastikan digest yang digunakan dalam verifikasi diambil dari lokasi yang Anda harapkan. Anda ingin memastikan bahwa pengguna istimewa belum mengubah lokasi penyimpanan hash ke lokasi penyimpanan yang tidak terlindungi, seperti Azure Storage, tanpa kebijakan kekekalan yang dikonfigurasi dan dikunci.
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.
Konten terkait
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk