Her şeyden önce, SQL hata günlüğünü gerçekten günlük için bir maksimum boyutu isabet olmadığını görmek için kontrol edin. Eğer öyleyse, sorgunun tamamlanma umudu yoktur, muhtemelen zaten geri alma durumundadır.
Öyle olsa bile, ben her zaman örümceği elle öldürmeyi tercih ederim ( örümceği bulmak için sp_who2
veya tuşunu kullanın sp_WhoIsActive
, sonra bir kill 59
ya da her neyse). Açık bir KILL yapmazsanız geri alma durumunu da kontrol edemezsiniz, ilgili konuya bakın .
Bu bir güncelleme veya ekleme değil, bir silme olduğundan, çok şanslı olabilirsiniz ve hemen geri döndüğünü görebilirsiniz. Değilse, bu noktaya gelmek için geri alınması uzun (veya daha uzun) sürebilir.
Geri alma durumunu görmek için şunu kullanın:
kill 59 with statusonly
Ne yazık ki, bu sık sık yararlı bir şey göstermiyor, sadece bir "% 0 tamamlandı" bulduk. Bu durumda, sp_who2
hala bir şey yapıp yapmadığını görmek için IO ve CPU'yu kullanmanız ve izlemeniz gerekir.
Yeniden başlatma ile ilgili olarak, bu büyük bir risktir. Örümcek etkin bir şekilde geri dönüyorsa (CPU ve GÇ değişiyorsa), SQL'in yeniden başlatılması veritabanını yalnızca geri alma işlemi tamamlanıncaya (saat ve saat) tamamen çevrimdışı duruma getirecektir. Ancak , CPU ve IO hareket etmiyorsa , aslında hemen temizleyebilir. Her iki durumda da, bu bir risktir.
Son bir seçenek, işler özellikle korkunçsa: Silme başlamadan hemen önce bir yedeğiniz varsa (ve db'de başka güncellemeler yoksa) , kurtarmanın en hızlı yolu DB'yi bırakmak, yeniden başlatmak olabilir SQL ve yedeklemeden geri yükleme.
DB'yi bırakamıyorsanız (veya örneği zaten yeniden başlattıysanız ve sql hata günlüğü 24 saatlik bir kurtarma süresi öngörüyorsa), SQL hizmetlerini kapatın, MDF ve LDF dosyalarını diskten silin, SQL'i başlatın, bırakın (hayalet) veritabanını seçin ve yedekten geri yükleyin.
Açıkçası, yalnızca bu, kullanıcıların etkileşimde bulunmadığı bir arka uç işleme veritabanı olsaydı.