กู้คืนการสำรองข้อมูลล้มเหลว - ไฟล์ 'Db' ไม่สามารถกู้คืนเป็น '{…} .mdf' ใช้ WITH MOVE เพื่อระบุตำแหน่งที่ถูกต้องสำหรับไฟล์


9

ฉันได้รับข้อผิดพลาดต่อไปนี้พยายามกู้คืนโดยใช้คำสั่งกู้คืนในไฟล์สำรองข้อมูลที่ฉันได้รับจากลูกค้า

เรียกคืนฐานข้อมูล SFDB จาก DISK = N'C: \ Backup \ Backup.bak '

มีความคิดเกี่ยวกับสิ่งที่ฉันสามารถทำได้เพื่อแก้ไขสิ่งนี้หรือไม่? มันกำลังมองหา mdf ดังนั้นฉันจึงสามารถสรุปได้ว่าไฟล์สำรองที่ฉันมีคือการสำรองข้อมูลที่เพิ่มขึ้นไม่ใช่การสำรองข้อมูลทั้งหมดและนั่นคือสาเหตุที่ทำไมจึงมองหา mdf

ฉันไม่แน่ใจว่า 1) พวกเขาให้ข้อมูลทั้งหมด (ทั้งฐานข้อมูล) หรือ 2) ฉันมีข้อมูลที่ถูกต้อง - และฉันสามารถกู้คืนได้ด้วยคำสั่ง T-SQL ที่ถูกต้อง - ฉันไม่รู้วิธีการ

ความช่วยเหลือชื่นชม

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.

เรียกคืน FileListOn เฉพาะจาก DISK = N'C: \ Backup \ Backup.bak 'แสดงให้ฉันเห็นดังต่อไปนี้ ...

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

คำตอบ:


19

ลองดูที่เอาต์พุตจากคำสั่งแรกของคุณ มีข้อผิดพลาด messag อยู่ในนั้นชี้ให้คุณแก้ไข

มองหาส่วนนี้:

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

โดยทั่วไปเส้นทางไฟล์ในเครื่องของคุณไม่ตรงกับเครื่องเดิม MOVEตัวเลือกที่จะช่วยให้คุณแก้ไขปัญหาที่

นี่คือตัวอย่างของคำสั่งRESTOREโดยใช้ตัวเลือกMOVE :

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

หวังว่านี่จะช่วยได้!


2

คำตอบของ Steven ทำงานให้ฉันเมื่อฉันดำเนินการคำสั่งนี้ต่อหน้า RESTORE:

alter database [YourDBName] 
set offline with rollback immediate

และสิ่งนี้หลังจาก RESTORE:

 alter database [YourDBName] 
 set online

-1

มันอาจเป็นปัญหากับสิทธิ์การเข้าถึง ตรวจสอบให้แน่ใจว่าผู้ใช้อยู่ในsysadminบทบาท

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.