SQL Server db tam yedeklemeden geri yüklenemiyor, günlük işleme başarısız oluyor, veritabanı 'geri yükleniyor' durumunda


14

Bilgisayarımın yerel SQL Server Developer Edition 12.0.2000.8 sürümünde geliştirme amacıyla bir veritabanı kurmaya çalışıyorum. Ağ üzerinden bana gönderilen tam bir veritabanı yedekleme ve ayrı işlem-log-sadece yedekleme dosyaları var.

Tam yedeklemeden geri yüklemeye çalışırken (~ 1 saat belki, veritabanı ~ 270 GB boyutunda), bir hata alıyorum:

System.Data.SqlClient.SqlError: 'veritabanı adı' veritabanı için günlük işlenirken bir hata oluştu. Mümkünse yedekten geri yükleyin. Bir yedekleme yoksa, günlüğü yeniden oluşturmak gerekebilir. (Microsoft.SqlServer.SmoExtended)

Bundan sonra, db 'Geri yükleniyor ..' durumundadır.

Gibi bir şey çalıştırmak istedim ( bu sorudan aldım )

ALTER DATABASE recovery_test_2 SET EMERGENCY;
ALTER DATABASE recovery_test_2 SET SINGLE_USER;

DBCC CHECKDB (recovery_test_2, REPAIR_ALLOW_DATA_LOSS) WITH NO_INFOMSGS, ALL_ERRORMSGS;

buna karşı, ama doğal olarak veritabanı 'Geri yükleme .. "durumunda olduğu gibi yapamıyorum.On geri yükleme işlemi yeniden başlatıldığında aynı hata iletisine yol açar, bırakarak ve yeniden geri yükleme de yardımcı olmadı.

Db'yi nasıl çalışır hale getiririm? İşlem tutarlılığı benim için önemli değil.

Otomatik oluşturulan SSMS geri yükleme komut dosyası:

  USE [master]
  RESTORE DATABASE [database_name] FROM  DISK = N'D:\database_name.bak' WITH  FILE = 1,
  MOVE N'database_name' TO N'D:\MSSQL\MSSQL12.MSSQLSERVER\MSSQL\DATA\database_name.mdf',
  MOVE N'database_name_index' TO N'D:\MSSQL\MSSQL12.MSSQLSERVER\MSSQL\DATA\database_name_index.ndf',
  MOVE N'database_name_log' TO N'D:\MSSQL\MSSQL12.MSSQLSERVER\MSSQL\DATA\database_name_log.ldf',
  NOUNLOAD,
  STATS = 5

  GO

@Craig Efrein tarafından önerilen sorgu sonucu

Veritabanı kapatıldığında açık işlemler / kullanıcılar olduğu, veritabanında denetim noktası oluşmadığı veya veritabanı salt okunur olduğu için günlük yeniden oluşturulamaz. Bu hata, işlem günlüğü dosyası bir donanım veya ortam hatası nedeniyle el ile silinmiş veya kaybolmuşsa oluşabilir.


Yorumlar uzun tartışmalar için değildir; bu görüşme sohbete taşındı .
Paul White 9

Yanıtlar:


2

Sohbete taşınan yorumlardan OP'den bu not:

Ben sadece GUI üzerinden eklemeyi denedim. .Mdf dosyasını seçtiğimde, SSMS, veritabanının 3 dosyadan (veri, dizin, günlük) oluştuğunu tespit etti, ancak bir şekilde MOVE ile geri yüklesem bile, dosya yolu hakkındaki veritabanı ayrıntıları yanlış diyordu! Bu yüzden sadece eski günlük / veri / dizin dosyasına işaret ve ... Veritabanı çevrimiçi.


-3

Tek kullanıcı moduna geçin ve geri yükleyin.

örnek:
İlk geri yükleme NORECOVERY seçeneğini kullanır, böylece ek geri yüklemeler yapılabilir. İkinci komut, işlem günlüğünü geri yükler ve ardından veritabanını son kullanıcı kullanımı için çevrimiçi duruma getirir.

RESTORE DATABASE AdventureWorks FROM DISK = 'C:\AdventureWorks.BAK'
WITH NORECOVERY
GO
RESTORE LOG AdventureWorks FROM DISK = 'C:\AdventureWorks.TRN'
WITH RECOVERY
GO

1
Soru tek bir RESTORE DATABASE deyimine başvuruyor, ayrı işlem günlüğü geri yüklemesi yapılmıyor. Kaynak veritabanı ve / veya yedekleme dosyasının bozuk olması muhtemeldir.
Bryan
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.