web-dev-qa-db-fra.com

Erreur de restauration de la base de données SQL Server: la conversion spécifiée n'est pas valide. (SqlManagerUI)

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 services avancés (v10.50.1600.1) pour mon hôte local en tant que base de données.

Il y a quelques jours, SQL Server est tombé en panne et j'ai dû installer une nouvelle version 2008 de R2 Express sur mon hôte local. Cela a bien fonctionné lorsque j'ai restauré d'anciennes versions de Express Edition, mais lorsque j'essaie de restaurer la base de données à partir du fichier .bak qui provient du serveur de production, l'erreur suivante est générée:

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 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'

Il génère une erreur différente

Msg 3154, niveau 16, état 4, ligne 1
Le jeu de sauvegarde contient une copie de 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 de manière anormale.

J'ai vérifié les versions. Ils semblent tous correspondre à moi, comme indiqué dans l'image ci-dessous

Auparavant, je pouvais restaurer une base de données à partir de la version standard pour en modifier l'édition, mais 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 mal. Je vous serais reconnaissant de l'aide à cet égard

Le problème a été résol car il semble que le fichier .bak était corrompu. Lorsque j'ai essayé avec un fichier différent, cela a fonctionné.

89
Learning

L'interface graphique peut être instable à certains moments. L'erreur que vous avez rencontrée lors de l'utilisation de T-SQL est due au fait que vous essayez de remplacer une base de données existante, mais que vous n'avez pas spécifié de remplacer/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.
39
SchmitzIT

Cela peut être dû à la restauration du fichier de sauvegarde de la version SQL Server 2012 dans SQL Server 2008 R2 ou même moins.

161
Subhash Makkena

Enfin eu cette erreur de partir sur une restauration. Je suis passé à SQL2012 par frustration, mais je suppose que cela fonctionnerait probablement encore sur 2008R2. Je devais utiliser les noms logiques:

RESTORE FILELISTONLY
FROM DISK = ‘location of your.bak file’

Et à partir de là, j'ai exécuté une instruction de restauration 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 cela a été fait, j'ai presque pleuré de joie.

Bonne chance!

15

Ci-dessous peut être 2 raisons pour ce problème:

  1. La sauvegarde effectuée sur SQL 2012 et Restore Headeronly ont été effectués dans SQL 2008 R2.

  2. Le support de sauvegarde est corrompu.

Si nous courons en dessous de la commande, nous pouvons toujours trouver l'erreur réelle:

restore headeronly
from disk = 'C:\Users\Public\Database.bak'

Indiquez l'emplacement complet de votre fichier de base de données dans le quot

J'espère que ça aide

4
Keren Caelen