J'ai fait un script pour restaurer des fichiers .bak ou de sauvegarde. Cela fonctionne pour certaines bases de données, mais pas pour une. Comment puis-je le faire fonctionner pour tout type de fichier .bak? Ceci est dans SQL Server 2008. Le message d'erreur est -
Msg 3234, Level 16, State 1, Line 1
Logical file 'Northwind_Data' is not part of database 'Northwind'.
Use RESTORE FILELISTONLY to list the logical file names.
Msg 3013, Level 16, State 1, Line 1
RESTORE DATABASE is terminating abnormally.
Script -
IF DB_ID('Northwind') IS NULL
BEGIN
RESTORE DATABASE [Northwind]
FILE = N'Northwind_Data'
FROM
DISK = N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SS2008\MSSQL\Backup\Northwind.bak'
WITH FILE = 1,
MOVE N'Northwind_Data'
TO N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SS2008\MSSQL\DATA\Northwind.mdf',
MOVE N'Northwind_Log'
TO N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SS2008\MSSQL\DATA\Northwind_0.LDF',
NOUNLOAD, STATS = 10
END
S'il vous plaît exécuter ci-dessous SQL et vérifier les noms logiques
RESTORE FILELISTONLY
FROM DISK = 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SS2008\MSSQL\Backup\Northwind.bak'
Et puis remplacez le nom logique indiqué par RESTORE FILELISTONLY
dans le script ci-dessous
--If database already exists do not restore
IF DB_ID('Northwind') IS NULL
BEGIN
RESTORE DATABASE [Northwind]
FILE = N'Northwind_Data'
FROM DISK = N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SS2008\MSSQL\Backup\Northwind.bak'
WITH
FILE = 1, NOUNLOAD, STATS = 10,
MOVE N'YOUR logical name of data file as shown by RESTORE FILELISTONLY command'
TO N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SS2008\MSSQL\DATA\Northwind.mdf',
MOVE N'YOUR logical name of Log file as shown by RESTORE FILELISTONLY command'
TO N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SS2008\MSSQL\DATA\Northwind_0.LDF'
END
Vérifiez les propriétés de la base de données et assurez-vous que le nom logique est identique au nom du fichier. Utilisez la commande Alter Database pour modifier ceux-ci:
ALTER DATABASE [Northwind] MODIFY FILE (NAME=N'Northwind_Data', NEWNAME=N'Northwind')
GO
ALTER DATABASE [Northwind] MODIFY FILE (NAME=N'Northwind_Data_log', NEWNAME=N'Northwind_log')
GO