Aracılığıyla paylaş


sys.dm_hadr_database_replica_states (Transact-SQL)

Şunlar için geçerlidir:SQL ServerAzure SQL Yönetilen Örneği

SQL Server'ın yerel örneğinin bir kullanılabilirlik çoğaltması barındırdığı Always On kullanılabilirlik grubuna katılan her veritabanı için bir satır döndürür. Bu dinamik yönetim görünümü, hem birincil hem de ikincil çoğaltmalarda durum bilgilerini kullanıma sunar. İkincil çoğaltmada, bu görünüm sunucu örneğindeki her ikincil veritabanı için bir satır döndürür. Birincil çoğaltmada, bu görünüm her birincil veritabanı için bir satır ve karşılık gelen ikincil veritabanı için ek bir satır döndürür.

Önemli

Eyleme ve üst düzey durumlara bağlı olarak, veritabanı durumu bilgileri kullanılamıyor veya güncel olmayabilir. Ayrıca, değerlerin yalnızca yerel ilgisi vardır. Örneğin, birincil çoğaltmada, last_hardened_lsn sütununun değeri, ikincil çoğaltmanın şu anda sahip olabileceği gerçek sağlamlaştırılmış günlük sırası numarası (LSN) yerine birincil çoğaltma için kullanılabilir olan belirli bir ikincil veritabanı hakkındaki bilgileri yansıtır.

Sütun adı Veri tipi Açıklama (birincil çoğaltmada)
database_id int Sql Server örneğinde benzersiz olan veritabanının tanımlayıcısı. Bu, sys.databases katalog görünümünde görüntülenen değerle aynıdır.
group_id uniqueidentifier Veritabanının ait olduğu kullanılabilirlik grubunun tanımlayıcısı.
replica_id uniqueidentifier Kullanılabilirlik grubu içindeki kullanılabilirlik çoğaltmasının tanımlayıcısı.
group_database_id uniqueidentifier Kullanılabilirlik grubundaki veritabanının tanımlayıcısı. Bu tanımlayıcı, bu veritabanının katıldığı her çoğaltmada aynıdır.
is_local bit Kullanılabilirlik veritabanının yerel olup olmadığı, aşağıdakilerden biri:

0 = Veritabanı SQL Server örneğinde yerel değildir.
1 = Veritabanı sunucu örneğinde yereldir.
is_primary_replica bit Çoğaltma birincilse 1 veya ikincil çoğaltmaysa 0 döndürür.

Şunlar için geçerlidir: SQL Server 2014 (12.x) ve sonraki sürümleri.
synchronization_state tinyint Veri taşıma durumu, aşağıdaki değerlerden biri.

0 = Eşitlenmiyor. Birincil veritabanı için, veritabanının işlem günlüğünü ilgili ikincil veritabanlarıyla eşitlemeye hazır olmadığını gösterir. İkincil bir veritabanı için bu değer, veritabanının bir bağlantı sorunu nedeniyle günlük eşitlemesini başlatmadığını, askıya alındığını veya başlatma veya rol anahtarı sırasında geçiş durumlarından geçtiğini gösterir.

1 = Eşitleme. Birincil veritabanı için, veritabanının ikincil veritabanından tarama isteğini kabul etmeye hazır olduğunu gösterir. İkincil bir veritabanı için, veritabanı için etkin veri taşımanın gerçekleştiğini gösterir.

2 = Eşitlenmiş. Birincil veritabanı SYNCHRONIZEDyerine SYNCHRONIZING gösterir. Zaman uyumlu işleme ikincil veritabanı, yerel önbellek veritabanının yük devretmeye hazır olduğunu ve eşitleniyor olduğunu söylediğinde eşitlenmiş olarak gösterilir.

3 = Geri Alma. İkincil veritabanı birincil veritabanından etkin olarak sayfa alırken geri alma işleminin aşamasını gösterir.

Dikkat: İkincil çoğaltmadaki bir veritabanı REVERTING durumundayken, ikincil çoğaltmaya yük devretmeye zorlamak veritabanını birincil veritabanı olarak başlatılamaması durumunda bırakır. Veritabanının ikincil veritabanı olarak yeniden bağlanması veya günlük yedeklemesinden yeni günlük kayıtları uygulamanız gerekir.

4 = Başlatma. İkincil veritabanının geri alma LSN'sini yakalaması için gereken işlem günlüğü ikincil çoğaltmada sevk edilir ve sağlamlaştırılırken geri alma aşamasını gösterir.

Dikkat: İkincil çoğaltmadaki bir veritabanı INITIALIZING durumundayken, ikincil çoğaltmaya yük devretmeye zorlamak veritabanını birincil veritabanı olarak başlatılamaması durumunda bırakır. Veritabanının ikincil veritabanı olarak yeniden bağlanması veya günlük yedeklemesinden yeni günlük kayıtları uygulamanız gerekir.
synchronization_state_desc nvarchar(60) Veri taşıma durumunun açıklaması, bunlardan biri:

NOT SYNCHRONIZING
SYNCHRONIZING
SYNCHRONIZED
REVERTING
INITIALIZING
is_commit_participant bit 0 = İşlem işlemesi bu veritabanına göre eşitlenmez.

1 = İşlem işlemesi bu veritabanına göre eşitlenir.

Zaman uyumsuz işleme kullanılabilirlik çoğaltması üzerindeki bir veritabanı için bu değer her zaman 0.

Zaman uyumlu işleme kullanılabilirlik çoğaltması üzerindeki bir veritabanı için bu değer yalnızca birincil veritabanında doğrudur.
synchronization_health tinyint Kullanılabilirlik çoğaltması üzerindeki kullanılabilirlik grubuna katılmış bir veritabanının eşitleme durumunun kesişimini ve kullanılabilirlik çoğaltmasının kullanılabilirlik modunu (zaman uyumlu-işleme veya zaman uyumsuz-işleme modu) yansıtır. Aşağıdaki değerlerden biri olabilir.

0 = Sağlıklı değil. Veritabanının synchronization_state0 (NOT SYNCHRONIZING).

1 = Kısmen iyi durumda. Zaman uyumlu işleme kullanılabilirlik çoğaltması üzerindeki veritabanı, synchronization_state1 ise (SYNCHRONIZING) kısmen iyi durumda kabul edilir.

2 = Sağlıklı. Zaman uyumlu işleme kullanılabilirlik çoğaltması üzerindeki veritabanı, synchronization_state2 (SYNCHRONIZED) ve synchronization_state1 ise (SYNCHRONIZING) iyi durumda kabul edilir.
synchronization_health_desc nvarchar(60) Kullanılabilirlik veritabanının synchronization_health açıklaması.

NOT_HEALTHY
PARTIALLY_HEALTHY
HEALTHY
database_state tinyint 0 = Çevrimiçi
1 = Geri Yükleme
2 = Kurtarma
3 = Kurtarma bekleniyor
4 = Şüpheli
5 = Acil durum
6 = Çevrimdışı

Not:state'daki sys.databases. sütunuyla aynı
database_state_desc nvarchar(60) Kullanılabilirlik çoğaltmasının database_state açıklaması.

ONLINE
RESTORING
RECOVERING
RECOVERY_PENDING
SUSPECT
EMERGENCY
OFFLINE

Not:state_desc'daki sys.databases. sütunuyla aynı
is_suspended bit Veritabanı durumu, bunlardan biri:

0 = Sürdürüldü
1 = Askıya Alındı
suspend_reason tinyint Veritabanı askıya alınırsa, askıya alınma durumunun nedeni aşağıdakilerden biri olur:

0 = Kullanıcı eylemi
1 = İş ortağından askıya alma
2 = Yinele
3 = Yakalama
4 = Uygula
5 = Yeniden Başlatma
6 = Geri Al
7 = Yeniden Doğrulama
8 = İkincil çoğaltma eşitleme noktası hesaplamasında hata
suspend_reason_desc nvarchar(60) Veritabanının askıya alınma durumunun açıklaması, aşağıdakilerden biri:

SUSPEND_FROM_USER = Kullanıcı veri taşımayı el ile askıya aldı

SUSPEND_FROM_PARTNER = Veritabanı çoğaltması zorlamalı yük devretmeden sonra askıya alındı

SUSPEND_FROM_REDO = Yineleme aşamasında bir hata oluştu

SUSPEND_FROM_APPLY = Günlük dosyasına yazılırken bir hata oluştu (bkz. hata günlüğü)

SUSPEND_FROM_CAPTURE = Birincil çoğaltmadaki günlük yakalanırken bir hata oluştu

SUSPEND_FROM_RESTART = Veritabanı yeniden başlatılmadan önce veritabanı çoğaltması askıya alındı (bkz. hata günlüğü)

SUSPEND_FROM_UNDO = Geri alma aşamasında bir hata oluştu (bkz. hata günlüğü)

SUSPEND_FROM_REVALIDATION = Yeniden bağlantıda günlük değişikliği uyuşmazlığı algılandı (bkz. hata günlüğü)

SUSPEND_FROM_XRF_UPDATE = Ortak günlük noktası bulunamıyor (bkz. hata günlüğü)
recovery_lsn sayısal (25,0) Birincil çoğaltmada, birincil veritabanı kurtarma veya yük devretmeden sonra yeni günlük kayıtlarını yazmadan önce işlem günlüğünün sonu. Belirli bir ikincil veritabanı için, bu değer geçerli sağlamlaştırılmış LSN'den (last_hardened_lsn) küçükse, recovery_lsn bu ikincil veritabanının yeniden eşitlemesi gereken değerdir (yani, geri dönmek ve yeniden başlatabilmek için). Bu değer geçerli sağlamlaştırılmış LSN'den büyük veya buna eşitse, yeniden eşitleme gereksiz olur ve gerçekleşmez.

recovery_lsn, sıfırlarla doldurulmuş bir günlük bloğu kimliğini yansıtır. Bu gerçek bir LSN değil. Bu değerin nasıl türetilmiş olduğu hakkında bilgi için, bu makalenin devamında LSN sütun değerlerini anlamabakın.
truncation_lsn sayısal (25,0) Birincil çoğaltmada, birincil veritabanı için ilgili tüm ikincil veritabanlarında en düşük günlük kesme LSN'sini yansıtır. Yerel günlük kesilmesi engellenmişse (yedekleme işlemi gibi), bu LSN yerel kesme LSN'sinden daha yüksek olabilir.

Belirli bir ikincil veritabanı için, bu veritabanının kesme noktasını yansıtır.
truncation_lsn sıfırlarla doldurulmuş bir günlük bloğu kimliğini yansıtır. Bu gerçek bir günlük dizisi numarası değil.
last_sent_lsn sayısal (25,0) Birincil çoğaltmayı sorguladığınızda, her ikincil çoğaltma veritabanı satırı için last_sent_lsn bildirilir. Birincil tarafından tüm günlük bloklarının gönderildiği noktayı gösteren günlük bloğu tanımlayıcısı. Bu, en son gönderilen günlük bloğunun kimliği yerine gönderilen sonraki günlük bloğunun kimliğidir.

last_sent_lsn sıfırlarla doldurulmuş bir günlük bloğu kimliğini yansıtır. Bu gerçek bir günlük dizisi numarası değil.
last_sent_time datetime Birincil çoğaltmayı sorguladığınızda, her ikincil çoğaltma veritabanı satırı için last_sent_time bildirilir. Son günlük bloğunun gönderildiği zaman.
last_received_lsn sayısal (25,0) İkincil çoğaltmayı sorguladığınızda, yerel ikincil çoğaltma veritabanı satırı için last_received_lsn bildirilir. Bu ikincil veritabanını barındıran ikincil çoğaltma tarafından tüm günlük bloklarının alındığı noktayı tanımlayan günlük bloğu kimliği.

last_received_lsn, sıfırlarla doldurulmuş bir günlük bloğu kimliğini yansıtır. Bu gerçek bir günlük dizisi numarası değil.
last_received_time datetime İkincil çoğaltmayı sorguladığınızda, yerel ikincil çoğaltma veritabanı satırı için last_received_time bildirilir. Alınan son iletideki günlük bloğu kimliğinin ikincil çoğaltmada okunduğu zaman.
last_hardened_lsn sayısal (25,0) İkincil veritabanındaki son sağlamlaştırılmış LSN'nin günlük kayıtlarını içeren günlük bloğunun başlangıcı.

Zaman uyumsuz işleme birincil veritabanında veya geçerli ilkesi delayolan zaman uyumlu işleme veritabanında değer NULL. Diğer zaman uyumlu işleme birincil veritabanları için last_hardened_lsn tüm ikincil veritabanlarında sağlamlaştırılmış LSN'nin en düşük değerini gösterir.

sıfırlarla doldurulmuş bir günlük bloğu kimliğini yansıtır. Bu gerçek bir günlük dizisi numarası değil. Daha fazla bilgi için, bu makalenin devamında LSN sütun değerlerini anlamabakın.
last_hardened_time datetime İkincil veritabanında, son sağlamlaştırılmış LSN için günlük bloğu tanımlayıcısının zamanı (last_hardened_lsn). Birincil veritabanında, en düşük sağlamlaştırılmış LSN'ye karşılık gelen süreyi yansıtır.
last_redone_lsn sayısal (25,0) İkincil veritabanında yeniden yapılan son günlük kaydının gerçek günlük sırası numarası. last_redone_lsn her zaman last_hardened_lsn'den küçüktür.
last_redone_time datetime İkincil veritabanında son günlük kaydının yeniden oluşturulduğu zaman.
log_send_queue_size bigint İkincil veritabanlarına gönderilmemiş birincil veritabanının günlük kayıtlarının sayısı (kb).
log_send_rate bigint Birincil çoğaltma örneğinin son etkin dönemde kilobayt (KB)/saniye cinsinden veri gönderdiği ortalama oran.
redo_queue_size bigint İkincil çoğaltmanın günlük dosyalarında yer alan ve henüz yeniden ayarlanmamış günlük kayıtlarının kilobayt (KB) cinsinden sayısı.
redo_rate bigint Günlük kayıtlarının belirli bir ikincil veritabanında kilobayt (KB)/saniye cinsinden yeniden oluşturulduğu ortalama oran.

redo_rate, veritabanı altyapısının başlatılmasından bu yana toplam günlük baytları, geçen süre yerine yinelemenin etkin olarak çalıştığı zaman aralığına bölünerek hesaplanır. Yineleme sürekli çalışmayabileceği için sonuçta elde edilen değer, Database Replica:Redone Bytes/sec performans sayacının değerinden farklı (daha yüksek) olabilir.
filestream_send_rate bigint FILESTREAM dosyalarının ikincil çoğaltmaya gönderilme hızını kilobayt (KB)/saniye cinsinden belirtir.
end_of_log_lsn sayısal (25,0) Günlük LSN'sinin yerel sonu. Birincil ve ikincil veritabanlarındaki günlük önbelleğindeki son günlük kaydına karşılık gelen gerçek LSN. Birincil çoğaltmada, ikincil satırlar, ikincil çoğaltmaların birincil çoğaltmaya gönderdiği en son ilerleme iletilerinden günlük LSN'sinin sonunu yansıtır.

end_of_log_lsn sıfırlarla doldurulmuş bir günlük bloğu kimliğini yansıtır. Bu gerçek bir günlük dizisi numarası değil. Daha fazla bilgi için, bu makalenin devamında LSN sütun değerlerini anlamabakın.
last_commit_lsn sayısal (25,0) İşlem günlüğündeki son işleme kaydına karşılık gelen gerçek günlük sırası numarası.

Birincil veritabanında bu, işlenen son işleme kaydına karşılık gelir. İkincil veritabanlarının satırları, ikincil çoğaltmanın birincil çoğaltmaya gönderdiği günlük sırası numarasını gösterir.
İkincil çoğaltmada bu, yeniden yapılan son işleme kaydıdır.
last_commit_time datetime Son işleme kaydına karşılık gelen süre.

İkincil veritabanında, bu süre birincil veritabanındakiyle aynıdır.

Birincil çoğaltmada, her ikincil veritabanı satırı, ikincil veritabanını barındıran ikincil çoğaltmanın birincil çoğaltmaya geri bildirdiği zamanı görüntüler. Birincil veritabanı satırı ile belirli bir ikincil veritabanı satırı arasındaki zaman farkı, yineleme işleminin yakalandığını ve ilerlemenin ikincil çoğaltma tarafından birincil çoğaltmaya geri bildirildiği varsayılarak yaklaşık kurtarma noktası hedefini (RPO) temsil eder. Daha fazla bilgi için bkz. İkincil veritabanı RPO'sunun hesaplanması
low_water_mark_for_ghosts bigint Birincil veritabanında hayalet ve kalıcı sürüm deposu temizlemesi tarafından kullanılan düşük su işaretini gösteren veritabanı için monoton olarak artan bir sayı. Yazma iş yükü birincil iş yükünde çalışıyorsa ancak bu sayı zaman içinde artmıyorsa, hayalet ve kalıcı sürüm deposu temizleme işleminin tutulabileceği anlamına gelir. Hangi hayalet satırların ve hangi satır sürümlerinin temizlendiğine karar vermek için birincil çoğaltma, tüm çoğaltmalarda (birincil çoğaltma dahil) bu veritabanı için bu sütunun en düşük değerini kullanır.
secondary_lag_seconds bigint Eşitleme sırasında ikincil çoğaltmanın birincil çoğaltmanın arkasında olduğu saniye sayısı.

Birincil çoğaltmada, her ikincil veritabanı için eşitleme gecikmesi (gecikme), birincil çoğaltmada henüz sağlamlaştırılmayan birincil çoğaltmada en erken sağlamlaştırılmış LSN'nin sağlamlaştırılmasından bu yana geçen saniye sayısı olarak hesaplanır. Bu değer, veri taşıma askıya alınırsa 0 olarak gösterilir. Bu değerin etkin gecikmeyi göstermesi için veri taşımanın askıya alınmamış durumda olması gerekir.

Şunlar için geçerlidir: SQL Server 2016 (13.x) ve sonraki sürümleri.

LSN sütun değerlerini anlama

end_of_log_lsn, last_hardened_lsn, last_received_lsn, last_sent_lsn, recovery_lsnve truncation_lsn sütunlarının değerleri gerçek günlük dizisi numaraları (LSN) değildir. Bunun yerine, bu değerlerin her biri sıfırlarla doldurulmuş bir günlük bloğu kimliğini yansıtır.

end_of_log_lsn, last_hardened_lsnve recovery_lsn temizlenmiş LSN'lerdir. Örneğin, last_hardened_lsn zaten diskte olan blokların ötesindeki bir sonraki bloğun başlangıcını gösterir. Bu nedenle tüm LSN'ler diskteki last_hardened_lsn değerinden daha azdır. Bu değerden büyük veya buna eşit LSN'ler boşaltılamaz.

sys.dm_hadr_database_replica_statestarafından döndürülen LSN değerlerinden yalnızca last_redone_lsn gerçek bir LSN'dir.

İzinler

SQL Server 2019 (15.x) ve önceki sürümleri sunucuda VIEW SERVER STATE izin gerektirir.

SQL Server 2022 (16.x) ve sonraki sürümleri sunucuda VIEW SERVER PERFORMANCE STATE izin gerektirir.