Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
SQL Server Enterprise'da, veritabanı başlatma sırasında geri alma için gereken veriler çevrimdışıysa, bozuk bir işlem ertelenebilir. Ertelenmiş işlem, ilerletme aşaması tamamlandığında kaydedilmemiş olan ve geri alınmasına engel olan bir hatayla karşılaşmış bir işlemdir. İşlem geri alınamadığından ertelenmiş olur.
Uyarı
Bozuk işlemler yalnızca SQL Server Enterprise'da ertelenebilir. SQL Server'ın diğer sürümlerinde bozuk bir işlem başlatmanın başarısız olmasına neden olur.
Genellikle, veritabanı ileriye alınırken G/Ç hatası işlemin gerektirdiği bir sayfanın okunmasını engellediğinden ertelenen bir işlem oluşur. Ancak dosya düzeyindeki bir hata ertelenmiş işlemlere de neden olabilir. Kısmi geri yükleme dizisi, işlem geri alma işleminin gerekli olduğu bir noktada durduğunda ve bir işlem çevrimdışı olan verileri gerektirdiğinde de ertelenen bir işlem oluşabilir.
Geri dönen ve G/Ç hatasına isabet eden kullanıcı işlemleri tüm veritabanının çevrimdışına gitmesine neden olur. Veritabanı yeniden çevrimiçi duruma getirildiğinde, yineleme işlemi sahip olduğu tüm kilitleri yeniden alır ve kaydedilmemiş tüm işlemleri geri almaya çalışır. İşlem tarafından değiştirilen tüm veriler, işlem geri alınıncaya kadar uygun şekilde kilitli kalır. Geri alınamayan işlemler, bozulma düzeltildiğinde ve veritabanı yeniden başlatıldığında veya çevrimiçi geri yüklemeden sonra, veritabanı çevrimiçi kaldığında ertelenen işlemler çözümlendiğinde kilitlerinden vazgeçer. Bu noktaya kadar, ertelenen bir işlem veritabanında bir bütün olarak belirli işlemleri engelleyen kilitleri tutabilir. Örneğin, ertelenen bir işlem CREATE TABLE yönergesi içeriyorsa, ertelenen işlem çözümlenene kadar hiçbir kullanıcı tablo oluşturamıyor.
Ertelenmiş işlem, parçalı geri yüklemenin bir veritabanını bir veya daha fazla etkin işlemin henüz geri yüklenmemiş ve çevrimdışı olan bir dosya grubunu etkilediği bir noktaya kurtarması nedeniyle de oluşabilir. İşlemler geri alınamadığından ertelenebilir.
Aşağıdaki tabloda, veritabanının kurtarma gerçekleştirmesine neden olan eylemler ve G/Ç sorunu oluşursa sonuç listelenir.
| Eylem | Çözüm (G/Ç sorunları oluşursa veya gerekli veriler çevrimdışıysa) |
|---|---|
| Sunucu başlatma | Ertelenen işlem |
| Restore | Ertelenen işlem |
| Eklemek | Ekleme başarısız oluyor |
| Otomatik Yeniden Başlatma | Ertelenen işlem |
| Veritabanı veya veritabanı anlık görüntüsü oluşturma | Oluşturma başarısız oluyor |
| Veritabanı yansıtmayı yeniden yapma | Ertelenen işlem |
| Dosya grubu çevrimdışı | Ertelenen işlem |
Gereksinimler ve Sınırlamalar
- Veritabanı FULL veya BULK-LOGGED kurtarma modelini kullanmalıdır.
- Veritabanı için en az bir veritabanı ve log yedeklemesi tamamlanmış olmalıdır.
- Ertelenmiş işlemler, veritabanı çevrimiçi olduktan sonra bir işlemin geri alınması sırasında karşılaşılan hatalara uygulanmaz. (örneğin, çalışma zamanı hatası)
- Veritabanı ekleme sırasında kurtarma hataları için işlemler ertelenemez
- Sistem işlemleri (Örn. sayfa ayırma) gibi bazı işlemler ertelenemez
Bir İşlemi ERTELENMİ Durumundan Çıkarma
Önemli
Ertelenen işlemler işlem günlüğünü etkin tutar. Ertelenmiş işlemleri içeren bir sanal günlük dosyası, bu işlemler ertelenmiş durumdan çıkarılana kadar kesilemez. Günlük kesme hakkında daha fazla bilgi için bkz. İşlem Günlüğü (SQL Server).
İşlemi ertelenmiş durumdan çıkarmak için veritabanının G/Ç hatası olmadan temiz bir şekilde başlatılması gerekir. Ertelenmiş işlemler varsa G/Ç hatalarının kaynağını düzeltmeniz gerekir. Genellikle denenme sırasına göre listelenen kullanılabilir çözümler aşağıdaki gibidir:
Veritabanını yeniden başlatın. Sorun geçiciyse, veritabanı ertelenmiş işlemler olmadan başlamalıdır.
Bir dosya grubu çevrimdışı olduğu için işlemler ertelendiyse, dosya grubunu yeniden çevrimiçi yapın.
Çevrimdışı bir dosya grubunu yeniden çevrimiçi yapmak için aşağıdaki Transact-SQL deyimini kullanın:
RESTORE DATABASE database_name FILEGROUP=<filegroup_name>Veritabanını geri yükleyin. Çevrimiçi geri yüklemeden sonra ertelenen işlemler çözümlenir.
Tam veya toplu günlüğe kaydedilen kurtarma modeli altında, ertelenen işlemler yalnızca birkaç bozuk sayfadan kaynaklanıyorsa, çevrimiçi sayfa geri yüklemesi hataları çözebilir (destekleniyorsa).
Çevrimdışı durumu ertelenmiş işlemlere neden olan bir dosya grubuna artık ihtiyacınız yoksa, çevrimdışı dosya grubunu devre dışı bırakın. Dosya grubu çevrimdışı olduğu için ertelenen işlemler, dosya grubu kullanımdan kaldırıldıktan sonra ertelenmiş durumdan çıkarılır.
Önemli
İşlevsiz bir dosya grubu hiçbir zaman kurtarılamaz.
Daha fazla bilgi için bkz. Geçersiz Dosya Gruplarını Kaldırma (SQL Server).
Hatalı bir sayfa nedeniyle işlemler ertelendiyse ve veritabanının iyi bir yedeği yoksa, veritabanını onarmak için aşağıdaki işlemi kullanın:
İlk olarak aşağıdaki Transact-SQL deyimini yürüterek veritabanını acil durum moduna alın:
ALTER DATABASE <database_name> SET EMERGENCYAcil durum modu hakkında bilgi için bkz. Veritabanı Durumları.
Ardından, aşağıdaki DBCC deyimlerinden birinde DBCC REPAIR_ALLOW_DATA_LOSS seçeneğini kullanarak veritabanını onarın: DBCC CHECKDB, DBCC CHECKALLOC veya DBCC CHECKTABLE.
DBCC hatalı sayfayla karşılaştığında, DBCC bu sayfayı serbest bırakır ve ilgili hataları onarır. Bu yaklaşım, veritabanının fiziksel olarak tutarlı bir durumda yeniden çevrimiçi olmasını sağlar. Ancak ek veriler de kaybolabilir; bu nedenle, bu yaklaşım son çare olarak kullanılmalıdır.
Ayrıca Bkz.
Geri yükleme ve kurtarmaya genel bakış (SQL Server)
Geçersiz Dosya Gruplarını Kaldırma (SQL Server)
Dosya Geri Yüklemeleri (Tam Kurtarma Modeli)
Dosya Geri Yüklemeleri (Basit Kurtarma Modeli)
Sayfaları Geri Yükleme (SQL Server)
Parçalı Geri Yüklemeler (SQL Server)
VERİ TABANINI DEĞİŞTİR (Transact-SQL)
RESTORE (Transact-SQL)