web-dev-qa-db-fra.com

échec de la restauration de la base de données avec le déplacement

J'essaie de restaurer une sauvegarde de base de données mais j'obtiens une erreur:

La restauration a échoué pour le serveur 'ASIF-VAIO'. (Microsoft.SqlServer.SmoExtended)

INFORMATION ADDITIONNELLE:

System.Data.SqlClient.SqlError: Fichier 'C:\Program Files\Microsoft SQL Serveur\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\uwa.mdf 'est revendiqué par 'Aston_Fresh_log' (2) et 'Aston_Fresh' (1). La clause WITH MOVE peut être utilisé pour déplacer un ou plusieurs fichiers. (Microsoft.SqlServer.Smo)

18
DotnetSparrow

Lors de la restauration, vous devez vous assurer de

  • choisissez un nouveau nom de base de données qui n'existe pas déjà (sauf si vous voulez écraser cette base de données préexistante)

enter image description here

  • vous cochez l'option Overwrite dans la page à onglet Options et définissez valide et les nouveaux noms de fichier pour les fichiers .mdf et .ldf afin d'éviter de remplacer accidentellement une autre base de données sur votre système:

enter image description here

27
marc_s

Cet article contient d'excellentes réponses mais je ne crois pas que ma solution a été abordée ici ou je n'ai pas compris la réponse/le commentaire. 

Cependant, lorsque j'ai rencontré cette erreur, je restaurais une base de données avec 2 index (primaire et index). Le problème était que lors de la restauration, il avait créé deux fichiers .ndf, un pour chaque index, mais leur avait donné le même nom. 

Donc, en gros, deux fichiers "Restore As" ont été restaurés en "D:\MSSQLDATA\DatabaseName.ndf. 

Pour surmonter cela, je devais changer l’un des noms de fichiers. Ainsi, par exemple, j’ai changé

 Index      |    D:\MSSQLDATA\DatabaseName.ndf
 Primary    |    D:\MSSQLDATA\DatabaseName1.ndf

avoir des noms de fichiers uniques corrige cela pour moi. 

5
TheRealKernel

Cela a fonctionné pour moi: attribuer un nom différent à chaque fichier MDF et LDF dans la section script.

MOVE N'R_Data' 
  TO N'C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\Build51_Testing_db1.mdf',

MOVE N'R_audit' 
  TO N'C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\Build51_Testing_db2.mdf', 

etc...

Initialement suggéré par Alberto Morillo 

3
Lisa

Je sais que cela fait longtemps depuis la dernière réponse, mais j’ai trouvé par hasard dans Google une solution à ce problème . dans du code

RESTORE DATABASE [DB_NAME] 
FILE = N'[name]',  
FILE = N'[name1]',
FILE = N'[name2]' 
FROM  DISK = N'[file_path]' 
WITH  FILE = 1m
MOVE N'[name]' TO N'D:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Data\\[name].mdf',
MOVE N'[name1]' TO N'D:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Data\\[name1].mdf',
MOVE N'[name2]' TO N'D:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Data\\[name2].mdf',
MOVE N'[logname]' TO N'D:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Data\\[logname].ldf'
NOUNLOAD,
REPLACE,
STATS = 10
GO

Cordialement

1
Grzegorz Ochlik

Si vous rencontrez ce problème et qu'il ne s'agit pas du précédent, essayez sous Options de restauration> Fichiers, cochez la case Transférer tous les fichiers dans un dossier.

enter image description here

0
Dispersia