Khôi phục lỗi sao lưu - Không thể khôi phục tệp 'Db' thành '{'}} .mdf '. Sử dụng VỚI M CHUYỂN để xác định vị trí hợp lệ cho tệp


9

Tôi nhận được các lỗi sau khi thử khôi phục bằng lệnh khôi phục trên tệp sao lưu mà tôi nhận được từ một khách hàng.

RESTORE DatabASE SFDB TỪ DISK = N'C: \ Backup \ Backup.bak '

Bất kỳ suy nghĩ về những gì tôi có thể làm để sửa điều này? Đó là tìm kiếm mdf, vì vậy tôi có thể giả sử rằng tệp sao lưu tôi có là bản sao lưu gia tăng chứ không phải bản sao lưu đầy đủ và đó là lý do tại sao nó tìm kiếm mdf?

Tôi không chắc chắn nếu 1) họ đã cung cấp tất cả dữ liệu (toàn bộ db) hoặc 2) Tôi có dữ liệu phù hợp - và tôi có thể thực hiện khôi phục với các lệnh T-SQL phù hợp - Tôi chỉ không biết làm thế nào.

Giúp đỡ được đánh giá cao.

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.

RESTORE FileListOnly TỪ DISK = N'C: \ Backup \ Backup.bak 'hiển thị cho tôi những điều sau đây ...

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

Câu trả lời:


19

Hãy xem xét lại đầu ra từ lệnh đầu tiên của bạn. Có một lỗi lộn xộn trong đó chỉ cho bạn cách khắc phục.

Tìm phần này:

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

Về cơ bản, đường dẫn tệp trên máy của bạn không khớp với máy ban đầu. Các MOVE tùy chọn sẽ cho phép bạn khắc phục điều đó.

Dưới đây là một ví dụ về lệnh RESTORE sử dụng tùy chọn 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

Hi vọng điêu nay co ich!


2

Câu trả lời của Steven đã làm việc cho tôi khi tôi thực hiện lệnh này trước RESTORE:

alter database [YourDBName] 
set offline with rollback immediate

và cái này sau RESTORE:

 alter database [YourDBName] 
 set online

-1

nó cũng có thể là một vấn đề với quyền truy cập. đảm bảo người dùng trong sysadminvai trò

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.