comment migrer de sql 2000 à sql 2008 via restore?
-
06-07-2019 - |
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.
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