Question

J'utilise ce code:

RESTORE DATABASE [MyDB_2009May11] 
FROM  DISK = N'C:\DB Copy\MyDB_2009May11.bak' 
WITH  
MOVE N'Archive_Data' 
    TO N'C:\Program Files\Microsoft SQL Server\MSSQL10.SQL2008\MSSQL\DATA\MyDB_2009May11.mdf',  
MOVE N'Data' 
    TO N'C:\Program Files\Microsoft SQL Server\MSSQL10.SQL2008\MSSQL\DATA\MyDB_2009May11.mdf',  
MOVE N'Log' 
    TO N'C:\Program Files\Microsoft SQL Server\MSSQL10.SQL2008\MSSQL\DATA\MyDB_2009May11.ldf',  
NOUNLOAD,  
STATS = 10
GO

Je reçois cette erreur:

Msg 3176, niveau 16, état 1, ligne 1 Le fichier 'C: \ Program Files \ Microsoft SQL Server \ MSSQL10.SQL2008 \ MSSQL \ DATA \ MyDB_2009May11.mdf' est revendiqué par 'Archive_Data' (3) et 'Data' (1). La clause WITH MOVE peut être utilisée pour déplacer un ou plusieurs fichiers. Msg 3013, Niveau 16, Etat 1, Ligne 1 RESTORE DATABASE se termine de manière anormale.

Comment puis-je migrer de SQL Server 2000 vers 2008 alors que tout ce que j'ai est le fichier de sauvegarde?

:) Toute aide est appréciée.

Était-ce utile?

La solution

effectuez une sélection * dans sysaltfiles et examinez les noms de fichiers appropriés, puis modifiez les noms de la partie pour les modifier en conséquence

Ceci vous donnera les noms de tous les groupes de fichiers actuellement

select filename from master..sysaltfiles
where name = 'MyDB_2009May11'

Si vous n'avez pas encore la base de données scriptée, faites-la d'abord. assurez-vous que les dossiers existent, vous pouvez aussi vouloir changer la taille des fichiers

    CREATE DATABASE [MyDB_2009May11] ON (NAME = N'Data',
    FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10.SQL2008\MSSQL\DATA\MyDB_2009May11.mdf'
     , SIZE = 12, FILEGROWTH = 10%),
     (NAME = N'Archive_Data',
    FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10.SQL2008\MSSQL\DATA\MyDB_2009May11.ndf'
     , SIZE = 12, FILEGROWTH = 10%)
    LOG ON (NAME = N'Log', 
FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10.SQL2008\MSSQL\DATA\MyDB_2009May11.ldf'
     , SIZE = 21, FILEGROWTH = 10%)
     COLLATE SQL_Latin1_General_CP1_CI_AS

La restauration devrait être la suivante, notez l'extension ndf du groupe de fichiers d'archive

.
RESTORE DATABASE [MyDB_2009May11] 
FROM  DISK = N'C:\DB Copy\MyDB_2009May11.bak' 
WITH  
MOVE N'Archive_Data' 
    TO N'C:\Program Files\Microsoft SQL Server\MSSQL10.SQL2008\MSSQL\DATA\MyDB_2009May11.mdf',  
MOVE N'Data' 
    TO N'C:\Program Files\Microsoft SQL Server\MSSQL10.SQL2008\MSSQL\DATA\MyDB_2009May11.ndf',  
MOVE N'Log' 
    TO N'C:\Program Files\Microsoft SQL Server\MSSQL10.SQL2008\MSSQL\DATA\MyDB_2009May11.ldf',  
NOUNLOAD,  
STATS = 10
GO

Autres conseils

Vous essayez de déplacer Archive_Data et Data dans le même fichier - changez le nom du fichier et tout devrait bien se passer:)

J'ai rencontré ce problème également, et juste un petit ajout, je devais utiliser la clause REPLACE car la base de données que je restaurais était différente de celle de la sauvegarde:

RESTORE DATABASE [MyDB_2009May11]  
FROM  DISK = N'C:\DB Copy\MyDB_2009May11.bak'  
WITH   
MOVE N'Archive_Data'  
    TO N'C:\Program Files\Microsoft SQL Server\MSSQL10.SQL2008\MSSQL\DATA\MyDB_2009May11.mdf',   
MOVE N'Data'  
    TO N'C:\Program Files\Microsoft SQL Server\MSSQL10.SQL2008\MSSQL\DATA\MyDB_2009May11.ndf',   
MOVE N'Log'  
    TO N'C:\Program Files\Microsoft SQL Server\MSSQL10.SQL2008\MSSQL\DATA\MyDB_2009May11.ldf',   
**REPLACE**,
NOUNLOAD,   
STATS = 10 
GO 
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top