Yedekleme Hatalarını Geri Yükle - 'Db' dosyası '{…} .mdf' dosyasına geri yüklenemez. Dosya için geçerli bir konum belirlemek için WITH MOVE kullanın


9

Bir müşteriden aldığım bir yedekleme dosyasındaki geri yükleme komutunu kullanarak geri yükleme yapmaya çalışırken aşağıdaki hataları alıyorum.

VERİTABANI SFDB'DEN DİSKİ GERİ YÜKLE = N'C: \ Backup \ Backup.bak '

Bunu düzeltmek için neler yapabileceğim hakkında bir fikrin var mı? Bu mdf arıyor, bu yüzden sahip olduğum yedekleme dosyasının tam bir yedekleme değil, artımlı bir yedekleme olduğunu varsayabilir miyim ve bu yüzden mdf arıyor?

Ben emin değilim eğer 1) tüm veri (tüm db) veya 2 verdiyse ben doğru veri var - ve ben doğru T-SQL komutları ile geri yükleme yapabilirsiniz - Ben sadece nasıl bilmiyorum.

Yardım takdir edilir.

Msg 5133, Level 16, State 1, Line 2
Directory lookup for the file "D:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\Db.mdf" failed with the operating system error 21(failed to retrieve text for this error. Reason: 15105).
Msg 3156, Level 16, State 3, Line 2
File 'Db' cannot be restored to 'D:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\Db.mdf'. Use WITH MOVE to identify a valid location for the file.
Msg 5133, Level 16, State 1, Line 2
Directory lookup for the file "D:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\Db_log.LDF" failed with the operating system error 21(failed to retrieve text for this error. Reason: 15105).
Msg 3156, Level 16, State 3, Line 2
File 'DbDev_log' cannot be restored to 'D:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\Db_log.LDF'. Use WITH MOVE to identify a valid location for the file.
Msg 3634, Level 16, State 1, Line 2
The operating system returned the error '21(failed to retrieve text for this error. Reason: 15105)' while attempting 'GetVolumeInformation' on 'D:\'.
Msg 3013, Level 16, State 1, Line 2
RESTORE DATABASE is terminating abnormally.

FileListOnly FROM DISK = N'C: \ Backup \ Backup.bak 'bana şunları gösterir ...

LogicalName PhysicalName    Type    FileGroupName   Size    MaxSize FileId  CreateLSN   DropLSN UniqueId    ReadOnlyLSN ReadWriteLSN    BackupSizeInBytes   SourceBlockSize FileGroupId LogGroupGUID    DifferentialBaseLSN DifferentialBaseGUID    IsReadOnly  IsPresent   TDEThumbprint
Db  D:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\Db.mdf  D   PRIMARY 29622272    35184372080640  1   0   0   02925462-83CC-4222-8966-53229FA25B1C    0   0   29032448    512 1   NULL    269000000146900238  735C7F0E-F63D-4AA1-AC48-505A084AC00B    0   1   NULL
Db_log  D:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\Db_log.LDF  L   NULL    40239104    2199023255552   2   0   0   71038B04-CBC9-4E4A-93AD-4E1268859CB2    0   0   0   512 0   NULL    0   00000000-0000-0000-0000-000000000000    0   1   NULL
DbDev_filestream    D:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\Db  S   PRIMARY_FILESTREAM  4691012 0   65537   18000000011800001   0   627C9AAA-97BD-4991-9C8C-90C400226A9F    0   0   4784128 512 2   NULL    269000000146900238  735C7F0E-F63D-4AA1-AC48-505A084AC00B    0   1   NULL

Yanıtlar:


19

İlk komutunuzdan çıktıya bir kez daha bakın. İçinde düzeltmeye işaret eden bir hata mesajı var.

Bu bölümü arayın:

Use WITH MOVE to identify a valid location for the file.

Temel olarak, makinenizdeki dosya yolu orijinal makineyle eşleşmiyor. TAŞIMA seçeneği düzeltmek izin verir.

MOVE seçeneğini kullanarak RESTORE komutunun bir örneği :

USE [master]
RESTORE DATABASE [AdventureWorks2008R2] 
FROM  DISK = N'C:\SQL Backups\AdventureWorks2008R2.bak' 
WITH  FILE = 1,  
MOVE N'AdventureWorks2008R2_Data' TO N'C:\MyNewDataLocation\AdventureWorks2008R2_Data.mdf',  
MOVE N'AdventureWorks2008R2_Log' TO N'C:\MyNewLogLocation\AdventureWorks2008R2_Log.ldf',  
MOVE N'FileStreamDocuments2008R2' TO N'C:\MyNewFileStreamLocation\Documents2008R2',  
NOUNLOAD,  REPLACE,  STATS = 1
GO

Bu yardımcı olur umarım!


2

Bu komutu GERİ YÜKLE'den önce uyguladığımda Steven'ın cevabı benim için çalıştı:

alter database [YourDBName] 
set offline with rollback immediate

ve RESTORE'dan sonra:

 alter database [YourDBName] 
 set online

-1

erişim haklarıyla ilgili bir sorun da olabilir. kullanıcının sysadminrolde olduğundan emin olun .

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.