Aracılığıyla paylaş


Azure SQL Yönetilen Örneği'nden Fabric yansıtmalı veritabanları için otomatik yeniden doldurma

Bu makale, Azure SQL Yönetilen Örneği'nde bir veritabanını yansıtmak için otomatik yeniden izlemeyi kapsar.

Belirli koşullarda, Fabric'e yansıtma işlemi gecikirse, artırılmış işlem günlüğü dosyası kullanımı ortaya çıkabilir. Taahhüt edilen değişiklikler yansıtılmış veritabanına çoğaltıldıktan sonra ancak işlem günlüğü kesilebilir. İş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 amacıyla, Azure SQL Veritabanı ve Azure SQL Yönetilen Örneği'nde yansıtma, işlem günlüğünün kesilmesini ve veritabanı yansıtmasının Fabric'e yeniden başlatılmasını sağlayan otomatik yeniden tohumlama özelliğini kullanır.

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. Yeniden izleme, yansıtma için yapılandırılmış 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.

Azure SQL Veritabanı ve Azure SQL Yönetilen Örneği'nde yeniden denetleme veritabanı düzeyinde veya tablo düzeyinde gerçekleşebilir.

  • Veritabanı düzeyi yeniden yüklendi: Yansıtma için etkinleştirilen veritabanındaki tüm tablolar için sürekli veri yansıtma durdurulur, işlem günlüğü kesilir ve yansıtma için etkinleştirilen tüm tabloların ilk anlık görüntüsü yeniden yayımlanarak veritabanı için yansıtma yeniden başlatılır. Ardından, kademeli değişiklikler sürekli olarak çoğaltmayı sürdürür.

  • Tablo düzeyi yeniden yüklendi: Verilerin sürekli yansıtılması yalnızca yeniden izleme gerektiren tablolar için durdurulur. Etkilenen tablolar için yansıtma, ilk anlık görüntünün yeniden yayınlama işlemi ile yeniden başlatılır. Ardından, kademeli değişiklikler sürekli olarak çoğaltmayı sürdürür.

Veritabanı düzeyinde otomatik yeniden tohumlamanın nedenleri

Veritabanı düzeyinde yapılan yeniden tohumlama, işlem günlüğünün maksimum boyuta ulaşmasını engelleyerek veritabanı yazma kullanılabilirliğini korur. İşlem günlüğü boyutu üst sınırı, Azure SQL Veritabanı veya Azure SQL Yönetilen Örneği'nin veritabanı Hizmet Düzeyi Hedefi'ne bağlıdır. Bir veritabanı Fabric yansıtması için etkinleştirildiğinde, işlem günlüğü kullanımı büyümeye devam edebilir ve günlük kısaltılmasını engelleyebilir. İşlem günlüğü boyutu tanımlanan en yüksek sınıra ulaştığında veritabanına yazma işlemi başarısız olur.

  • Yansıtma nedeniyle engellenen günlük kesilmesi birden çok nedenden dolayı gerçekleşebilir:

    • Kaynak verileri yansıtılmış veritabanına yansıtırken ortaya çıkan gecikme, replikasyon bekleyen işlemlerin işlem günlüğünden kesilmesini önler.
    • Uzun süredir çalışan çoğaltılmış işlemler, çoğaltmayı bekleyen işlem olarak kalır ve işlem günlüğü alanını tutmaya devam eder, bu nedenle kesilemez.
    • OneLake'teki giriş bölgesine yazılan sürekli hatalar, çoğaltmayı engelleyebilir.
      • Bu senaryo yetersiz izinlerden kaynaklanabilir. Dokuya Yansıtma, One Lake'teki giriş bölgesine yazmak için Sistem Tarafından Atanan Yönetilen Kimlik (SAMI) veya Kullanıcı Tarafından Atanan Yönetilen Kimlik (UAMI) kullanır. Bu doğru yapılandırılmazsa, işlemlerin çoğaltılma işlemi tekrar tekrar başarısız olabilir.

        Uyarı

        Kullanıcı Tarafından Atanan Yönetilen Kimlik (UAMI) desteği şu anda önizleme aşamasındadır.

  • Yazılım altyapısı kapasitesi duraklatılır ve devam ettirilirse, yansıtılmış veritabanı durumu Duraklatıldı olarak kalır. Sonuç olarak, kaynakta yapılan değişiklikler OneLake'e çoğaltılamaz. Yansıtmayı sürdürmek için Doku portalında yansıtılmış veritabanına gidin ve Çoğaltmayı sürdür'ü seçin. Yansıtma duraklatıldığı yerden devam eder.

    Fabric kapasitesi uzun süre duraklatılırsa, yansıtma durduğu noktadan devam etmeyebilir ve verileri baştan tekrar işlemeye başlayabilir. Bunun nedeni, yansıtmanın uzun süre duraklatılmasının kaynak veritabanı işlem günlüğü kullanımının büyümesine ve günlük kesilmesinin engellenmesine neden olabilmesidir. Yansıtma devam ettirildiğinde, kullanılan işlem günlüğü dosyası alanı dolmak üzereyse, tutulan günlük alanını boşaltmak için veritabanının yeniden başlatılması başlatılır.

Tablo düzeyinde otomatik yeniden sıralama sebepleri

Yansıtma için etkinleştirilen kaynak tablolarda şema değişiklikleri gerçekleştiğinde, Doku'daki yansıtılmış tabloların şeması artık kaynakla eşleşmez. Bunun nedeni kaynakta aşağıdaki ALTER TABLE veri tanımı dili (DDL) T-SQL deyimleri olabilir:

  • Sütun ekleme/bırakma/değiştirme/yeniden adlandırma
  • Tabloyu kesme/yeniden adlandırma
  • Kümelenmemiş birincil anahtar ekleme

Reseed işlemi yalnızca etkilenen tablolar için tetiklenir.

Tanılama

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. Azure SQL Veritabanı'nda günlük kullanımıyla ilgili ek sorun giderme işlemleri için bkz. Azure SQL Veritabanı ile ilgili işlem günlüğü hatalarını giderme.

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];

Yeniden tohumlama sırasında

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.

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.
  • Günlüğü yeniden kullanma nedeni şudur: REPLICATION.
  • REPLICATION gü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ğunda sys.databases.is_data_lake_replication_enabled gerçekleşir. Bu değer Doku Yansıtma tarafından yapılandırılır.

Veritabanı düzeyinde bir yeniden sıfırlamanın tetiklenip tetiklenmediğini kontrol edin

Veritabanının tamamı yeniden tohumlanıyorsa aşağıdaki koşullara bakın.

  • Kaynak SQL veritabanındaki sistem saklı yordamında bulunan reseed_state sütunu, sys.sp_help_change_feed_settings kolonunun 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 öğesine 0taşı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 7 içindeki state sütunu, sys.sp_help_change_feed_table değerine sahiptir.

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

Tablo düzeyinde bir yeniden başlatmanın tetiklenip tetiklenmediğini kontrol edin.

  • Yeniden tohumlanan herhangi bir tablo için, 7 içindeki state sütunu için sys.sp_help_change_feed_table değerini arayın.

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