Belirtiler
Microsoft SQL ServerSQL Server 2014, 2016 veya 2017'nin yüklü olduğunu varsayalım. Aşağıdaki sorunlardan biriyle veya birkaçıyla karşılaşabilirsiniz:
- SQL Server örneği yanıt vermiyor gibi görünüyor ve "Verimsiz Zamanlayıcı" hatası oluşuyor. Kurtarmak için sunucuyu yeniden başlatmanız gerekebilir.
- Bir işlemin geri alınmasının tamamlanması uzun zaman alabilir. Çoğu durumda, örneğin yeniden başlatılması, veritabanının geri alma işleminden çok daha hızlı kurtarılmasını sağlar. Geri alma işleminin tamamlanmasının uzun sürmesinin birçok nedeni olduğunu unutmayın. Yeniden başlatmaya çalışmadan önce geri alma işlemlerini izleme hakkında ayrıntılı bilgi için aşağıdaki "Daha Fazla Bilgi" bölümüne bakın.
- SOS_OBJECT_STORE gibi spinlock'larda yüksek beklemeler görebilirsiniz.
Çözüm
Bu sorun, SQL ServerSQL Server için aşağıdaki toplu güncelleştirmelerde düzeltilmiştir:
Cumulative Update 9 for SQL ServerSQL Server 2017
SQL Server 2016 SP2 için Toplu Güncelleştirme 2
SQL Server toplu güncelleştirmeleri hakkında:
SQL Server için her yeni toplu güncelleştirme, önceki toplu güncelleştirmeye dahil edilen tüm düzeltmeleri ve tüm güvenlik düzeltmelerini içerir. SQL Server için en son toplu güncelleştirmelere göz atın:
En son toplu güncelleştirme SQL ServerSQL Server 2017
SQL Server 2016 için en son toplu güncelleştirme
SQL Server 2014 için en son toplu güncelleştirme
Service pack information for SQL ServerSQL Server
Bu güncelleştirme, aşağıdaki SQL Server hizmet paketinde düzeltilmiştir:
Service Pack 3 for SQL ServerSQL Server 2014
SQL Server için hizmet paketleri hakkında:
Hizmet paketleri birikimlidir. Her yeni hizmet paketi, yeni düzeltmelerle birlikte önceki hizmet paketlerindeki düzeltmeleri de içerir. Önerimiz, en son hizmet paketini ve bu hizmet paketine yönelik en son toplu güncelleştirmeyi uygulamanızdır. En son hizmet paketini yüklemeden önce önceki bir hizmet paketini yüklemenize gerek yoktur. En son hizmet paketi ve en son toplu güncelleştirme hakkında daha fazla bilgi bulmak için aşağıdaki makalede yer alan Tablo 1'i kullanın.
SQL Server ve bileşenlerinin sürüm, sürüm ve güncelleştirme düzeyini belirleme
Uzun süre çalışan bir işlem, işlem günlüğü dosyasında çok sayıda VLF, yavaş G/Ç vb. gibi bir geri alma işleminin uzun sürmesinin birçok nedeni vardır. Bu makalede açıklanan sorunun yavaş geri almanın temel nedeni olduğunu doğrulamak için geri alma işleminin ilerleme durumunu izlemek üzere aşağıdaki tekniklerin kullanılmasını öneririz:
- sys.dm_exec_requests komutu "KILLED/ROLLBACK" olarak ayarlanmış session_id belirleyin ve oturumun ilerlemeyi gösteren hem GÇ hem de CPU zamanı biriktirdiğinden emin olun. GÇ değişmiyorsa, bu makalede açıklanan sorunla karşılaştığınızın göstergesi olabilir.
- Aşağıdaki gibi bir sorgu kullanarak geri alma işleminin geçerli durumunu belirlemek için sys.dm_tran_database_transactions sorgulayın:
Not
- SELECT getdate() as CurrentTime, database_transaction_next_undo_lsn,database_transaction_begin_lsn,t.transaction_id,database_transaction_begin_time,database_transaction_log_record_count,db_name(t.database_id)
- FROM sys.dm_tran_database_transactions t
- JOIN sys.dm_exec_requests s
ON t.transaction_id=s.transaction_id - WHERE t.database_id=db_id('<Veritabanı Adı') ve s.session_id=<Session_id>
Not:
Yukarıdaki sorguda,
database_transaction_next_undo_lsn , geri alınacak bir sonraki kaydın LSN'sidir. database_transaction_begin_lsn , işlem günlüğündeki hareket için başlangıç kaydının LSN'sidir.
database_transaction_next_undo_lsn bu sorgunun her anlık görüntüsünde azalıyor olmalıdır. database_transaction_next_undo_lsn database_transaction_begin_lsn ulaştığında geri alma işlemi başarıyla tamamlanır.
Buradaki amaç, önceden belirlenmiş bir aralık içinde önceki sorgunun birkaç anlık görüntüsünü almak ve ardından bu aralıkta database_transaction_next_undo_lsn işlenen LSN'lerin deltasını kullanmak ve database_transaction_next_undo_lsndatabase_transaction_begin_lsn ulaşması için gereken süreyi tahmin etmektir.
Her anlık görüntü arasında geri alma işlemi makul bir hızda ilerliyorsa, SQL Server örneği yeniden başlatmadan kendi kendine geri alma işleminin tamamlanmasına izin verilmesini öneririz.
Uzun süre çalışan kurtarma hakkında daha fazla bilgi için aşağıdaki makalelere bakın:
- Understanding Recovery Performance in SQL ServerSQL Server
- SQL ServerSQL Server (2000, 2005, 2008): Kurtarma/Geri alma beklenenden uzun sürüyor
- Günlük dosyası yapısı veritabanı kurtarma süresini nasıl etkileyebilir?
- DMV'den alınan bilgileri kullanarak veritabanı kurtarma ilerlemesini izleme
Durum
Microsoft bunun, "Şunlar için geçerlidir" bölümünde listelenen Microsoft ürünlerinde sorun olduğunu doğrulamıştır.
Başvurular
Microsoft'un yazılım güncelleştirmelerini tanımlamak için kullandığı terminoloji hakkında bilgi edinin.