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.
Bu makale, SQL Server örneğinden bir veritabanını yansıtmak için otomatik yeniden izlemeyi kapsar.
Dokuya yansıtmadaki gecikmelerin işlem günlüğü dosyası kullanımının artmasına neden olabileceği bazı durumlar vardır. Bunun nedeni, kaydedilen değişiklikler yansıtılmış veritabanına çoğaltılana kadar işlem günlüğünün kesilememesidir. İşlem günlüğü boyutu tanımlı sınır üst sınırına ulaştığında veritabanına yazma işlemi başarısız olur. İşletimsel veritabanlarını kritik OLTP işlemleri için yazma hatalarına karşı korumak için, işlem günlüğünün kesilmesini sağlayan ve veritabanı yansıtmasını Dokuya yansıtan yeniden başlatan bir otomatik yanıtlanan mekanizma ayarlayabilirsiniz.
Yeniden görüntülenen, yansıtılmış veritabanından Microsoft Fabric'e işlem akışını durdurur ve yansıtmayı mevcut durumda yeniden başlatıyor. Bu, yansıtma için yapılandırılan tabloların yeni bir ilk anlık görüntüsünü oluşturmayı ve bunu Microsoft Fabric'e çoğaltmayı içerir. Anlık görüntüden sonra artımlı değişiklikler çoğaltılır.
Yeniden izleme sırasında, Microsoft Fabric'teki yansıtılmış veritabanı öğesi kullanılabilir ancak yeniden kullanıma sunulana kadar artımlı değişiklikler almaz. içindeki reseed_statesys.sp_help_change_feed_settings sütun, yeniden depolanmış durumu gösterir.
Otomatik yeniden tohumlama özelliği, SQL Server 2025'te varsayılan olarak devre dışıdır. Etkinleştirmek için Otomatik yeniden tohumlamayı etkinleştirme kısmına bakın. Otomatik yanıtlanan özellik etkinleştirilir ve Azure SQL Veritabanı ve Azure SQL Yönetilen Örneği'nde yönetilemez veya devre dışı bırakılamaz.
Doku Yansıtma'da kaynak SQL veritabanı işlem günlüğü izlenir. Otomatik yanıtlanan yalnızca aşağıdaki üç koşul doğru olduğunda tetiklenir:
- İşlem günlüğü dolu yüzdeden fazladır
@autoreseedthreshold, örneğin,70. SQL Server'da, sys.sp_change_feed_configure_parameters özelliği etkinleştirdiğinizde bu değeri yapılandırın. - Günlüğü yeniden kullanma nedeni şudur:
REPLICATION. -
REPLICATIONgünlük yeniden kullanım bekleme işlemi, işlem çoğaltması veya CDC gibi diğer özellikler için tetiklenebildiği için, otomatik yanıtlanan yalnızca = 1 olduğundasys.databases.is_data_lake_replication_enabledgerçekleşir. Bu değer Doku Yansıtma tarafından yapılandırılır.
Diagnose
Doku yansıtmanın yansıtılmış bir veritabanı için günlük kesilmesini engelleyip engellemediğini belirlemek için sistem kataloğu görünümündeki sütunu log_reuse_wait_desc kontrol sys.databases ederek nedeninin olup REPLICATIONolmadığını denetleyin. Günlüğü yeniden kullanma bekleme türleri hakkında daha fazla bilgi için bkz . İşlem günlüğünün kesilmesini geciktiren faktörler. Örneğin:
SELECT [name], log_reuse_wait_desc
FROM sys.databases
WHERE is_data_lake_replication_enabled = 1;
Sorgu günlük yeniden kullanım bekleme türünü gösteriyorsa REPLICATION , doku yansıtması nedeniyle işlem günlüğü işlenen işlemleri boşaltamaz ve doldurmaya devam eder.
Toplam günlük alanını, geçerli günlük kullanımını ve kullanılabilir alanı denetlemek için aşağıdaki T-SQL betiğini kullanın:
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];
Otomatik yanıtlananı etkinleştir
Önceki T-SQL betiği tarafından döndürülen günlük kullanımı dolmaya yakınsa (örneğin, 70%'den büyük), sistem saklı yordamını kullanarak yansıtılmış veritabanını otomatik yeniden izleme için etkinleştirmeyi sys.sp_change_feed_configure_parameters göz önünde bulundurun. Örneğin, otomatik yanıtlanan davranışı etkinleştirmek için:
USE <Mirrored database name>
GO
EXECUTE sys.sp_change_feed_configure_parameters
@autoreseed = 1
, @autoreseedthreshold = 70;
Daha fazla bilgi için bkz. sys.sp_change_feed_configure_parameters.
Kaynak veritabanında, yeniden kullanılan, yansıtma tarafından tutulan işlem günlüğü alanını serbest bırakmalıdır. Saklama nedeninin yansıtmadan CHECKPOINT kaynaklanması durumunda günlük alanının serbest bırakılmasına zorlamak için kaynak SQL Server veritabanında bir el kitabı REPLICATION oluşturun. Daha fazla bilgi için bkz . CHECKPOINT (Transact-SQL).
El ile yeniden koruması
En iyi uygulama olarak, otomatik yeniden kullanıma alınan işlevselliği açmadan önce etkiyi anlamak için aşağıdaki saklı yordamı kullanarak belirli bir veritabanı için el ile yeniden denetlenmesini test edebilirsiniz.
USE <Mirrored database name>
GO
EXECUTE sp_change_feed_reseed_db_init @is_init_needed = 1;
Daha fazla bilgi için bkz. sys.sp_change_feed_reseed_db_init.
Yeniden kullanıma alınmış bir değerin tetiklenip tetiklenmediğini denetleyin
Kaynak SQL veritabanındaki sistem saklı yordamında bulunan
reseed_statesütunu,sys.sp_help_change_feed_settingskolonunun mevcut yeniden başlatma durumunu gösterir.-
0= Normal. -
1= Veritabanı, Doku'ya yeniden başlatma işlemini başlattı. Geçiş durumu. -
2= Veritabanı Doku'ya yeniden başlatılıyor ve çoğaltmanın yeniden başlatılmasını bekliyor. Geçiş durumu. Çoğaltma oluşturulduğunda, yeniden görüntülenen durum öğesine0taşınır.
Daha fazla bilgi için bkz. sys.sp_help_change_feed_settings.
-
Veritabanında yansıtma için etkinleştirilen tüm tabloların
7içindekistatesütunu,sys.sp_help_change_feed_tabledeğerine sahiptir.Daha fazla bilgi için bkz. sys.sp_help_change_feed_table.