SQL server veritabanları, durumu geri yüklemeye takıldı


79

Sharepoint sunucum var. Yedekleme aracımızla ilgili bir sorunumuz vardı ve şimdi veritabanlarımın bir kısmı da durumu geri yüklüyor!

Veritabanlarını geri yüklemeyi gösteren resim

Geri yükleme işlemini durdurmak mümkün mü? ve ayrıca, veritabanı bütünlüğünün tehlikeye girmediğinden nasıl emin olabilirim?

Yanıtlar:


129

Bu, büyük olasılıkla WITH NORECOVERYveritabanını işlem günlüğüne hazır hale getirmek için geri yükleme işleminden sonra uygulanacak geri yükleme komut dosyasından kaynaklanıyordur .

Veritabanı şimdi en son işlem günlüğü dosyasını bekliyor.

Ya yapabilirsiniz:

  1. Son işlem günlüğünü uygula kullanarak, RESTORE LOG database_name FROM backup_device WITH RECOVERY;... ya
  2. Veritabanını tekrar geri yükleyin, ancak bu sefer ... WITH RECOVERY;... veya
  3. Aşağıdakileri uygulayarak veritabanını geri yükleme modundan çıkarmaya zorlayın: RESTORE DATABASE YourDb WITH RECOVERY;

Bunu yapmadan önce, lütfen bu seçeneklerin etkilerini anladığınızdan emin olun. Dikkatli değilseniz veri kaybına neden olabilirsiniz.

Ayrıntılar için buna bakın:


Bunlar işe yaramazsa, ne yaptığınızı bilmiyorsanız ve veri kaybı riskini tam olarak anlayamıyorsanız, dba.stackexchange.com/questions/11175/… - tekrar bkz . Ancak, üretim dışı bir sunucuya bağlıysanız, yeni bir geri yükleme yapmak için iyi yedeklemeleriniz vardır ve söz konusu sunucuda SQL'i yeniden başlatabilirsiniz.
Nate,

6
Msgstr "Yürüterek veri tabanını geri yükleme modundan çıkmaya zorla: DATABASE DATABASE YourDb WITH RECOVERY". 20 dakikalık kafa kaşıma ve yeniden başlatma hizmetleri, ardından bir astar ile sabitlenir. Teşekkürler!
Echilon

2
Aynı durumdan sapılmıştım dev kutu. Seçenek 3 bir cazibe gibi çalıştı!
Moiz Tankiwala

Bir DB'yi .bak'tan yeni bir DB'ye geri yüklemeye çalıştım , ancak diskteki dosya adlarını değiştirmeyi unuttum. Dosyalar mevcut bir veritabanı tarafından kullanıldığından değil, başka bir hatadan dolayı geri yükleme başarısız oldu. Bu mevcut DB'yi bozdu (geri yükleme durumuna takıldı). # 3 saniye sonra tekrar çevrimiçi duruma getirdi ve verileri kontrol ederek her şey yolunda görünüyor. Teşekkürler!
CoDEmanX

44

Bu sorunu çözmek için basit T-SQL Script:

bu betiği Yeni Sorgu penceresine yazıp yürütün:

RESTORE DATABASE [DataBase Name] WITH RECOVERY;

GERİ KAZANIM VERİ TABANI [veritabanı_adı] GERİ KAZANIMLA .... Benim için mükemmel çalıştı. Teşekkür ederim!

10
Bunun anlamını anlamak için çok dikkatli olun. DB bir günlük bekletmeyi bekliyorsa, önemli miktarda veri kaybına neden olabilir.
David Spillett

2
Hata nedeniyle çalışmaz, "Günlük geri yüklenmediğinden veritabanı kurtarılamaz."
Ian Boyd

0

Ben sadece bu durum vardı ve tedavi oldukça şaşırtıcıydı:

ALTER DATABASE DBName SET ONLINE;

Görünüşe göre kırdı NetBackup geri yükleme garip bir durumda bıraktı. Başka hiçbir çözüm işe yaramadı (SQL Server hizmetini yeniden başlatmayı henüz denememiş olmama rağmen)

Teorik olarak bir geri yükleme başladığında, sonra başarısız olursa, veri bozmuş olabilir, ancak veritabanı ile dikkatli olurdum. Sadece yine de veritabanını geri yüklemek için gidiyorum, bu yüzden benim için önemli değil.


Bu sorunun yanlış cevabı, eğer 'Çevrimiçi' olan 'Veritabanını kurmaya çalışırsanız' 'Veritabanını geri yükleme durumundayken ALTER DATABASE'e izin verilmiyor' 'hatası alıyorsunuz.
James Jenkins

Belki de StackOverflow'un nasıl olduğunu bilmiyorsunuz, bazen yayınlananlardan biraz farklı soruları yanıtlıyoruz. Bu değer sağlar çünkü insanlar genellikle çevrimiçi arama yaptıktan sonra kendi sorularına benzer sorulara gelirler. Hakkında olgusal istem İlişkin ALTER DATABASEizin verilmeme, benim durumda, veritabanı durumunu kavuşmasını gibi gösteriliyor aslında olduğunu size temin ve kullanma SET ONLINEaslında çalıştı . Bu yüzden beni yanlış ya da yalan söylediğinin farkına var. Bir alternatif olduğunda gerçekten yapmanız gereken şey bu mu?
ErikE

@JamesJenkins Ve bu alternatif nedir? Alternatif, bir veritabanının devlet restorasyonunda gösterebileceği, ancak gerçekte restorasyon yapmadığı hipotezidir. Veya geri yükleme işleminin son aşamasında olabilir, geri yükleme işlemi gerçekte ayarlanması için gerçekte tamamlanmıştır ONLINE. Uzun lafın kısası, bu site için yorumunuzun ve eksik oyunuzun satır dışı olduğunu ve bilgilerinizin aslında yanlış olduğunu, çünkü sunduğum verilerle uygun şekilde nitelendirilemediğini düşünüyorum.
ErikE

0

Bildiğimiz gibi, varsayılan veritabanı geri yükleme seçeneği, veritabanının kullanılabilir olmasını sağlayan Kurtarma ile ve veritabanı geri yüklemesinin tamamlanmasından sonra kullanım için Çevrimiçi'dir.

Örnek:

RESTORE DATABASE YourDB FROM DISK= 'C:\\Data\\YourDBBackup.bak'
WITH RECOVERY
GO

NO Kurtarma ile geri yükleme hakkında önemli noktaları görelim

  • Veritabanı kullanılamaz
  • Geri yükleme modunda kalır
  • Bir sonraki geri yükleme sırası yapılabilir
  • Taahhüt edilmemiş işlemleri geri almaz

NoRecovery ile Geri Yükle

Bu seçenek özellikle çoklu yedekleme geri yüklendiğinde kullanılır. Bu, geri yükleme komutunu norecovery seçeneğiyle yürüttüğünüz anlamına gelir; bu, veritabanının son sırayla yedeklenene kadar kullanıcılara bırakılmadığı anlamına gelir. Son yedeklemede, Kurtarma seçeneği kullanılır ve veritabanı çevrimiçi olur.

Örnek:

RESTORE DATABASE YourDB FROM DISK - 'C:\\Data\\Backup_part1.bak' 
WITH NORECOVERY
GO

Ve sonra:

RESTORE LOG YourDB FROM DISK = 'C:\\Data\\BackupLog-part2.trn'
WITH RECOVERY
GO

1
Cevabında bir yazım hatası olabilir. Kurtarma ile geri yükleme hakkında ... ile işaretli bölüm , RESTORE ...WITH NORECOVERYseçenek için geçerli olan tüm seçenekleri listeler . Bunu iki kez kontrol edebilir misiniz?
hot2use
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.