Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir: SQL Server 2022 (16.x) ve sonraki sürümleri
Azure SQL Veritabanı
Azure SQL Yönetilen Örneği
Bu makalede, kayıt defteri tablolarınızdaki verilerin bütünlüğünü doğrulaacaksınız. Veritabanınızda Otomatik özet depolamayı yapılandırdıysanız, otomatik özet depolamayı kullanarak T-SQL bölümünü izleyin. Aksi takdirde, T-SQL'i, el ile oluşturulmuş bir özet bölümünü kullanarak takip edin.
Önkoşullar
- Azure SQL Veritabanı veya Azure SQL Yönetilen Örneği kullanıyorsanız etkin bir Azure aboneliği. Aboneliğiniz yoksa ücretsiz bir hesap oluşturun.
- Güncellenebilir kayıt defteri tabloları oluşturun ve kullanın veya yalnızca eklenen kayıt defteri tabloları oluşturun ve kullanın.
- SQL Server Management Studio.
- Doğrulama saklı yordamlarını çalıştırabilmeniz için önce veritabanında ALTER DATABASE SET options (Transact-SQL) veritabanı seçeneğini etkinleştirin.
Veritabanı için kayıt defteri doğrulamasını çalıştırma
- Otomatik özet saklama kullanarak T-SQL
- T-SQL'i, el ile oluşturulmuş bir özet ile kullanarak
SQL Server Management Studio kullanarak veritabanınıza bağlanın.
Aşağıdaki T-SQL deyimiyle yeni bir sorgu oluşturun:
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 CATCHSorguyu çalıştır. Veritabanı özetlerinizin depolandığı geçerli konumu ve önceki konumları döndürdüğünü
digest_locationsgörürsünüz. Sonuç, kayıt defteri doğrulama işleminin başarısını veya başarısızlığını döndürür.digest_locationsÖzetlerinizin konumlarını görüntülemek için sonuç kümesini açın. Aşağıdaki örnekte bu veritabanı için iki özet depolama konumu gösterilmektedir:pathözetlerin konumunu gösterir.last_digest_block_id,pathkonumunda depolanan son özetin blok kimliğini belirtir.is_currentiçindekipathkonumun geçerli (true) veya önceki (yanlış) bir konum olup olmadığını gösterir.[ { "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 } ]
Önemli
Kayıt defteri doğrulamasını çalıştırdığınızda, doğrulamada kullanılan özetlerin beklediğiniz konumlardan alındığını doğrulamak için
digest_locationsöğesinin konumunu denetleyin. Ayrıcalıklı bir kullanıcının özet depolamanın konumlarını, yapılandırılmış ve kilitli bir değiştirilemezlik ilkesi olmadan Azure Depolama gibi korumasız bir depolama konumuna değiştirmediğinden emin olun.Doğrulama, Sonuçları penceresinde aşağıdaki iletiyi döndürür.
Veritabanınızda herhangi bir kurcalama yoksa ileti şu şekilde olur:
Ledger verification successfulVeritabanınızda kurcalama varsa , İletiler penceresinde aşağıdaki hata görüntülenir:
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.