J'obtiens les erreurs suivantes en essayant de faire une restauration en utilisant la commande de restauration sur un fichier de sauvegarde que j'ai reçu d'un client.
RESTORE DATABASE SFDB FROM DISK = N'C:\Backup\Backup.bak '
Avez-vous des idées sur ce que je peux faire pour corriger cela? Il recherche le mdf, alors puis-je supposer que le fichier de sauvegarde que j'ai est une sauvegarde incrémentielle et non la sauvegarde complète et c'est pourquoi il recherche le mdf?
Je ne sais pas si 1) ils ont donné toutes les données (la base de données entière) ou 2) j'ai les bonnes données - et je peux faire la restauration avec les bonnes commandes T-SQL - je ne sais tout simplement pas comment.
L'aide est appréciée.
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 FROM DISK = N'C:\Backup\Backup.bak 'me montre ce qui suit ...
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
Jetez un autre regard sur la sortie de votre première commande. Il y a un message d'erreur qui vous indique le correctif.
Recherchez cette section:
Use WITH MOVE to identify a valid location for the file.
Fondamentalement, le chemin du fichier sur votre machine ne correspond pas à la machine d'origine. L'option MOVE vous permettra de résoudre ce problème.
Voici un exemple de la commande RESTORE utilisant l'option 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
J'espère que cela t'aides!
La réponse de Steven a fonctionné pour moi lorsque j'ai exécuté cette commande avant le RESTORE:
alter database [YourDBName]
set offline with rollback immediate
et celui-ci après le RESTORE:
alter database [YourDBName]
set online