J'utilise SQL Server 2008 R2 Standard (version 10.50.1600.1) pour mon site Web de production et l'édition SQL Server Express avec Advanced Services (v10.50.1600.1) pour mon hôte local 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é lorsque j'ai restauré certaines versions plus anciennes tirées de l'édition Express, mais lorsque j'essaie de restaurer la base de données à partir d'un .bak
fichier qui est extrait du serveur de production, cela provoque l'erreur suivante:
Erreur: la distribution spécifiée n'est pas valide. (SqlManagerUI)
et quand j'essaye 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 Files\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS2008R2\MSSQL\DATA\Publications.mdf',--adjust path
MOVE 'AlPublications_log' TO 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS2008R2\MSSQL\DATA\Publications.ldf'
Cela 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
RESTORE DATABASE se termine anormalement.
J'ai vérifié les versions. Ils semblent tous correspondre à moi, comme le montre l'image ci-dessous
Auparavant, je pouvais restaurer une base de données de la version standard à l'édition express, mais maintenant cela échoue. J'ai supprimé la base de données et essayé de la recréer. Cela échoue aussi.
Je ne suis pas sûr de ce que je fais de mal. J'apprécierais de l'aide à ce sujet concernant
Le problème a été résolu car il semble que le fichier .bak était corrompu. Quand je l'ai essayé avec un fichier différent, cela a fonctionné.
la source
,REPLACE
à la commande T-SQL pour écraser la base de données AlHabtoorPublications existante.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. Les éléments suivants peuvent fonctionner:
la source
, REPLACE
Failed: 38
indiquereached end of the file
. (Dans une fenêtre de commande, exécutezNET HELPMSG 38
). Cela indique généralement une sauvegarde corrompue: stackoverflow.com/questions/5656363/…Cela peut être dû à la restauration du fichier de sauvegarde de la version de SQL Server 2012 dans SQL Server 2008 R2 ou même moins.
la source
Enfin, cette erreur a disparu lors d'une restauration. Je suis passé à SQL2012 par frustration, mais je suppose que cela fonctionnerait probablement toujours sur 2008R2. J'ai dû utiliser les noms logiques:
Et à partir de là, j'ai exécuté une instruction de restauration en
MOVE
utilisant des noms logiques.Une fois la restauration terminée, j'ai presque pleuré de joie.
Bonne chance!
la source
Vous trouverez ci-dessous 2 raisons à ce problème:
La sauvegarde effectuée sur SQL 2012 et la restauration en-tête ont été effectuées dans SQL 2008 R2
Le support de sauvegarde est corrompu.
Si nous exécutons la commande ci-dessous, nous pouvons toujours trouver une erreur réelle:
Donnez l'emplacement complet de votre fichier de base de données dans le quot
J'espère que ça aide
la source