SQL Server'dan Fabric yansıtılmış veritabanları için otomatik yeniden çekirdeklemeyi yapılandırma

Bu makale, SQL Server örneğinden bir veritabanını yansıtmak için otomatik yeniden izlemeyi kapsar.

Bazı durumlarda, Microsoft Fabric'e yansıtma gecikmeleri işlem günlüğü dosyası kullanımının artmasına yol açabilir. Bu artış, işlenen değişiklikler yansıtılmış veritabanına çoğaltılana kadar işlem günlüğünün kırpılamaması nedeniyle oluşur. İşlem logu boyutu maksimum tanımlanmış sınırına ulaştıktan sonra, veritabanına yazmalar başarısız olur. Kritik OLTP işlemlerinde yazma hatalarına karşı operasyonel veritabanlarını korumak için, işlem günlüğünün truncate edilmesine olanak tanıyan ve Fabric’e veritabanı yansıtmasını yeniden başlatan bir otomatik yeniden tohumlama mekanizması ayarlayabilirsiniz.

Yeniden başlatma işlemi, yansıtılan veritabanından Fabric'e işlem akışını durdurur ve yansıtmayı geçerli durumdan itibaren yeniden başlatır. Bu süreç, yansıtma için yapılandırılmış tabloların yeni bir ilk anlık görüntüsünün oluşturulmasını ve bu anlık görüntünün Fabric'e çoğaltılmasını içerir. Anlık görüntüden sonra artımlı değişiklikler çoğaltılır.

Yeniden tohumlama sırasında, Fabric'teki yansıtılmış veritabanı öğesi kullanılabilir durumdadır, ancak yeniden tohumlama tamamlanana kadar artımlı değişiklikleri almaz. reseed_state içindeki sys.sp_help_change_feed_settings sütunu, yeniden tohumlama durumunu gösterir.

SQL Server 2025'te autoreseed özelliği varsayılan olarak devre dışı bırakılmıştır. Bunu etkinleştirmek için Otomatik yeniden tohumlamayı etkinleştirin bölümüne bakın. Azure SQL Veritabanı ve Azure SQL Yönetilen Örneği'ta bu özellik etkin, ancak yönetemezsiniz veya devre dışı bırakamazsınız.

Fabric Mirroring'de kaynak SQL veritabanının işlem günlüğü izlenir. Bir autoreseed yalnızca aşağıdaki üç koşul doğru olduğunda tetiklenir:

  • İşlem günlüğü %@autoreseedthreshold'den daha fazla dolu, örneğin, 70. SQL Server özelliği etkinleştirdiğinizde bu değeri sys.sp_change_feed_configure_parameters kullanarak yapılandırın.
  • Günlük yeniden kullanım nedeni REPLICATION.
  • REPLICATION işlem günlüğü yeniden kullanım beklemesi, işlemsel çoğaltma veya CDC gibi diğer özellikler nedeniyle de ortaya çıkabileceğinden, otomatik yeniden tohumlama yalnızca sys.databases.is_data_lake_replication_enabled = 1 olduğunda gerçekleşir. Bu değer Fabric Mirroring tarafından yapılandırılır.

Diagnose

Fabric mirroring'in aynalı veritabanı için log kesintisini engelleyip engellemediğini belirlemek için, log_reuse_wait_desc sistem kataloğu görünümündeki sys.databases sütununu kontrol ederek nedenin olup olmadığını REPLICATIONbelirleyin. 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 REPLICATION günlük yeniden kullanım bekleme türünü gösteriyorsa, Fabric yansıtması nedeniyle işlem günlüğü taahhüt edilen işlemleri temizleyemez ve dolmaya 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ğinin döndürdüğü günlük kullanım oranı dolmak üzereyse (örneğin %70'ten fazlaysa), sys.sp_change_feed_configure_parameters sistem saklı yordamını kullanarak yansıtılmış veritabanını otomatik olarak yeniden tohumlama için etkinleştirmeyi değerlendirin. Örneğin, autoreseed davranışını 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 tohumlama işlemi yansıtma ile tutulan işlem logu alanını serbest bırakmalıdır. Gecikme nedeni hâlâ REPLICATION yansıtma ise, kaynak SQL Server veritabanında bir kılavuz CHECKPOINT yayınlayarak log alanının serbest bırakılmasını zorunlu kılın. Daha fazla bilgi için bkz . CHECKPOINT (Transact-SQL).

Manuel yeniden başlatma

Otomatik yeniden tohumlama yapmadan önce etkisini anlamak için belirli bir veritabanı için manuel yeniden tohumlama yöntemini kullanarak test etmenizi öneririz.

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.

Bir reseed işleminin tetiklenip tetiklenmediğini kontrol edin

  • Kaynak SQL veritabanındaki reseed_state sistem saklı yordamı üzerindeki sys.sp_help_change_feed_settings sütunu, geçerli yeniden tohumlama durumunu gösterir.

    • 0 = Normal.
    • 1 = Veritabanı, Fabric için yeniden ilklendirme sürecini başlattı. Geçiş durumu.
      • 2= Veritabanı Fabric'e yeniden başlatılıyor ve replikasyonun yeniden başlatılması için bekliyor. Geçiş durumu. Çoğaltma kurulduğunda, yeniden tohumlama durumu 0 olarak değişir.

    Daha fazla bilgi için bkz. sys.sp_help_change_feed_settings.

  • Veritabanında yansıtma için etkinleştirilmiş tüm tabloların, 7 içindeki state sütununda sys.sp_help_change_feed_table değeri vardır.

    Daha fazla bilgi için bkz. sys.sp_help_change_feed_table.