Erreur de restauration de la base de données SQL Server: le cast spécifié n'est pas valide. (SqlManagerUI)
J'utilise la norme SQL Server 2008 R2 (version 10.50.1600.1) pour mon site de production et SQL Server Express edition avec Advanced Services (v10.50.1600.1) pour mon localhost en tant que base de données.
Il y a quelques jours, mon serveur SQL s'est écrasé et j'ai dû installer une nouvelle version 2008 R2 Express sur mon hôte local. Cela a bien fonctionné quand j'ai restauré des versions plus anciennes prises à partir D'Express edition mais quand j'essaie de restaurer la base de données à partir du fichier .bak
qui est pris à partir du serveur de production, cela provoque l'erreur suivante:
erreur: la distribution spécifiée n'est pas valide. (SqlManagerUI)
Et quand j'essaie de restaurer la base de données en utilisant la commande
Use Master
Go
RESTORE DATABASE Publications
FROM DISK = 'C:Publications.bak'
WITH MOVE 'Publications' TO 'C:Program FilesMicrosoft SQL ServerMSSQL10_50.SQLEXPRESS2008R2MSSQLDATAPublications.mdf',--adjust path
MOVE 'AlPublications_log' TO 'C:Program FilesMicrosoft SQL ServerMSSQL10_50.SQLEXPRESS2008R2MSSQLDATAPublications.ldf'
, Il génère une erreur différente
Msg 3154, Niveau 16, État 4, Ligne 1
Le jeu de sauvegarde contient une sauvegarde d'une base de données autre que la base de données 'Publications' existante.
Msg 3013, Niveau 16, État 1, Ligne 1
Restaurer la base de données se termine anormalement.
J'ai vérifié les versions. Ils semblent tous correspondre à moi comme indiqué dans l'image ci-dessous
Auparavant, j'étais capable de restaurer une base de données de la version standard à express edition mais maintenant elle échoue. J'ai supprimé la base de données et essayé de la recréer. Qui ne parvient pas, trop.
Je ne suis pas sûr de ce que je fais mal. J'apprécierais de l'aide à ce sujet
Problème a été résolu, comme il semble .fichier bak était corrompu. Quand je l'ai essayé avec un fichier différent cela a fonctionné.
4 réponses
L'interface graphique peut parfois être inconstante. L'erreur que vous avez obtenue lors de L'utilisation de T-SQL est que vous essayez d'écraser une base de données existante, mais que vous n'avez pas spécifié d'écraser/remplacer la base de données existante. Ce qui suit pourrait fonctionner:
Use Master
Go
RESTORE DATABASE Publications
FROM DISK = 'C:\Publications_backup_2012_10_15_010004_5648316.bak'
WITH
MOVE 'Publications' TO 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS2008R2\MSSQL\DATA\Publications.mdf',--adjust path
MOVE 'Publications_log' TO 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS2008R2\MSSQL\DATA\Publications.ldf'
, REPLACE -- Add REPLACE to specify the existing database which should be overwritten.
Pourrait être dû à la restauration du fichier de sauvegarde de la version SQL Server 2012 dans SQL Server 2008 R2 ou même moins.
Finalement obtenu cette erreur pour disparaître sur une restauration. J'ai déménagé à SQL2012 par frustration, mais je suppose que cela fonctionnerait probablement encore sur 2008R2. J'ai dû utiliser les noms logiques:
RESTORE FILELISTONLY
FROM DISK = ‘location of your.bak file’
Et à partir de là, j'ai exécuté une instruction restore avec MOVE
en utilisant des noms logiques.
RESTORE DATABASE database1
FROM DISK = '\\database path\database.bak'
WITH
MOVE 'File_Data' TO 'E:\location\database.mdf',
MOVE 'File_DOCS' TO 'E:\location\database_1.ndf',
MOVE 'file' TO 'E:\location\database_2.ndf',
MOVE 'file' TO 'E:\location\database_3.ndf',
MOVE 'file_Log' TO 'E:\location\database.ldf'
Quand il a été fait la restauration, j'ai presque pleuré de joie.
Bonne chance!
Ci-Dessous peut être 2 raisons:
-
La sauvegarde effectuée sur SQL 2012 et Restore Headeronly a été faite dans SQL 2008 R2
Le support de Sauvegarde est corrompue.
Si nous exécutons la commande ci-dessous, nous pouvons toujours trouver une erreur réelle:
restore headeronly
from disk = 'C:\Users\Public\Database.bak'
Donnez l'emplacement complet de votre fichier de base de données dans le quot
J'espère que ça aide