Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Artikel ini membahas reseeding otomatis untuk melakukan mirroring database dari instans SQL Server.
Dalam situasi tertentu, keterlambatan dalam mirroring ke Microsoft Fabric dapat menyebabkan peningkatan penggunaan file log transaksi. Peningkatan ini terjadi karena log transaksi tidak dapat dipotong sampai perubahan yang dikomitkan direplikasi ke database yang dicerminkan. Setelah ukuran log transaksi mencapai batas maksimum yang ditentukan, penulisan ke database gagal. Untuk melindungi database operasional dari kegagalan penulisan untuk transaksi OLTP penting, Anda dapat menyiapkan mekanisme penyemaian ulang otomatis yang memungkinkan log transaksi dipangkas dan menginisialisasi ulang pencerminan database ke Fabric.
Proses reseed menghentikan aliran transaksi ke Fabric dari database hasil pencerminan dan menginisialisasi kembali pencerminan ke status saat ini. Proses ini melibatkan pembuatan snapshot awal baru dari tabel yang dikonfigurasi untuk mirroring, dan mereplikasi snapshot tersebut ke Fabric. Setelah rekam jepret, perubahan bertahap direplikasi.
Selama reseed, item database yang dicerminkan di Fabric tersedia tetapi tidak menerima perubahan bertahap sampai reseed selesai. Kolom reseed_state dalam sys.sp_help_change_feed_settings menunjukkan status reseed.
Fitur autoreseed dinonaktifkan secara default di SQL Server 2025. Untuk mengaktifkannya, lihat Aktifkan autoreseed. Di Azure SQL Database dan Azure SQL Managed Instance, fitur ini diaktifkan, dan Anda tidak dapat mengelola atau menonaktifkannya.
Dalam Fabric Mirroring, log transaksi database SQL sumber dipantau. Autoreseed hanya aktif ketika tiga kondisi berikut benar:
- Log transaksi sudah terisi lebih dari
@autoreseedthresholdpersen; contohnya,70. Di SQL Server, konfigurasikan nilai ini saat Anda mengaktifkan fitur tersebut dengan menggunakan sys.sp_change_feed_configure_parameters. - Alasan penggunaan kembali log adalah
REPLICATION. -
REPLICATIONKarena waktu tunggu penggunaan kembali log dapat ditingkatkan untuk fitur lain seperti replikasi transaksional atau CDC, pembuatan ulang otomatis hanya terjadi ketikasys.databases.is_data_lake_replication_enabled= 1. Nilai ini dikonfigurasi oleh Fabric Mirroring.
Diagnose
Untuk mengetahui apakah pencerminan Fabric mencegah pemotongan log untuk database yang dicerminkan, periksa kolom log_reuse_wait_desc dalam tampilan katalog sistem sys.databases untuk menentukan apakah penyebabnya adalah REPLICATION. Untuk informasi selengkapnya tentang jenis tunggu penggunaan kembali log, lihat Faktor-faktor yang menunda pemotongan log transaksi. Contohnya:
SELECT [name], log_reuse_wait_desc
FROM sys.databases
WHERE is_data_lake_replication_enabled = 1;
Jika kueri menampilkan REPLICATION jenis tunggu penggunaan ulang log, itu berarti karena pencerminan Fabric, log transaksi tidak dapat menghapus transaksi yang sudah di-commit dan terus bertambah penuh.
Gunakan skrip T-SQL berikut untuk memeriksa total ruang log, dan penggunaan log saat ini dan ruang yang tersedia:
USE <Mirrored database name>
GO
--initialize variables
DECLARE @total_log_size bigint = 0;
DECLARE @used_log_size bigint = 0;
DECLARE @size int;
DECLARE @max_size int;
DECLARE @growth int;
--retrieve total log space based on number of log files and growth settings for the database
DECLARE sdf CURSOR
FOR
SELECT SIZE*1.0*8192/1024/1024 AS [size in MB],
max_size*1.0*8192/1024/1024 AS [max size in MB],
growth
FROM sys.database_files
WHERE TYPE = 1
OPEN sdf
FETCH NEXT FROM sdf INTO @size,
@max_size,
@growth
WHILE @@FETCH_STATUS = 0
BEGIN
SELECT @total_log_size = @total_log_size +
CASE @growth
WHEN 0 THEN @size
ELSE @max_size
END
FETCH NEXT FROM sdf INTO @size,
@max_size,
@growth
END
CLOSE sdf;
DEALLOCATE sdf;
--current log space usage
SELECT @used_log_size = used_log_space_in_bytes*1.0/1024/1024
FROM sys.dm_db_log_space_usage;
-- log space used in percent
SELECT @used_log_size AS [used log space in MB],
@total_log_size AS [total log space in MB],
@used_log_size/@total_log_size AS [used log space in percentage];
Aktifkan autoreseed
Jika penggunaan log yang dikembalikan oleh skrip T-SQL sebelumnya mendekati penuh (misalnya, lebih dari 70%), pertimbangkan untuk mengaktifkan basis data pencerminan agar pengisian ulang otomatis dapat dilakukan dengan menggunakan prosedur tersimpan sistem sys.sp_change_feed_configure_parameters. Misalnya, untuk mengaktifkan fungsi autoreseed:
USE <Mirrored database name>
GO
EXECUTE sys.sp_change_feed_configure_parameters
@autoreseed = 1
, @autoreseedthreshold = 70;
Untuk informasi selengkapnya, lihat sys.sp_change_feed_configure_parameters.
Di database sumber, proses reseed harus membebaskan ruang log transaksi yang tertahan oleh mirroring. Jika alasan keterlambatan masih REPLICATION karena mirroring, keluarkan manual CHECKPOINT pada database SQL Server sumber untuk memaksa pelepasan log space. Untuk informasi selengkapnya, lihat CHECKPOINT (Transact-SQL).
Pengisian ulang manual
Kami menyarankan Anda menguji reseed manual untuk database tertentu dengan menggunakan prosedur tersimpan berikut agar Anda memahami dampaknya sebelum mengaktifkan reseed otomatis.
USE <Mirrored database name>
GO
EXECUTE sp_change_feed_reseed_db_init @is_init_needed = 1;
Untuk informasi selengkapnya, lihat sys.sp_change_feed_reseed_db_init.
Periksa apakah pemicuan ulang telah dipicu
Kolom
reseed_statedalam prosedur tersimpan sistemsys.sp_help_change_feed_settingspada basis data SQL sumber menunjukkan status reseed saat ini.-
0= Biasa. -
1= Database telah memulai proses reinisialisasi ke Fabric. Status transisi.-
2= Database sedang diinisialisasi ulang ke Fabric dan menunggu replikasi dimulai kembali. Status transisi. Ketika replikasi ditetapkan, status reseed berubah menjadi0.
-
Untuk informasi selengkapnya, lihat sys.sp_help_change_feed_settings.
-
Semua tabel yang diaktifkan untuk mirroring dalam database memiliki nilai
7untuk kolomstatedisys.sp_help_change_feed_table.Untuk informasi selengkapnya, lihat sys.sp_help_change_feed_table.