Erro de recuperação da base de dados do servidor SQL: a versão indicada não é válida. (SqlManagerUI)

estou a usar a norma SQL Server 2008 R2 (versão 10.50.1600.1) para o meu site de produção e SQL Server Express edition with Advanced Services (v10.50.1600.1) for my localhost as a database.

Há alguns dias atrás, o meu servidor SQL avariou e tive de instalar uma nova versão do R2 Express em 2008 no meu localhost. Funcionou bem quando restaurei algumas versões mais antigas tiradas da Express edition, mas quando tento restaurar a base de dados do ficheiro .bak que é retirado do servidor de produção é causando o seguinte erro:

erro: o elenco indicado não é válido. (SqlManagerUI)

e quando tento restaurar a base de dados usando o comando

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'

gera um erro diferente

Msg 3154, Nível 16, Estado 4, Linha 1
O conjunto de backup contém um backup de uma base de dados que não a base de dados "publicações" existente.
Msg 3013, Nível 16, Estado 1, Linha 1
A recuperação da base de dados está a terminar anormalmente.

verifiquei as versões. Parecem-me todos iguais, como mostra a imagem abaixo

Anteriormente eu era capaz de restaurar uma base de dados da versão padrão para a edição express, mas agora ela falha. Apaguei a base de dados e tentei recriá-la. Isso também falha.

Não tenho a certeza do que estou a fazer de errado. Gostaria de ter ajuda neste assunto.

a questão foi resolvida, como parece .o ficheiro bak estava corrompido. Quando tentei com um um ficheiro diferente funcionou.

Author: Learning, 2012-11-28

4 answers

O GUI pode ser inconstante às vezes. O erro que você obteve ao usar T-SQL é porque você está tentando sobrepor uma base de dados existente, mas não especificou para sobrepor/substituir a base de dados existente. O seguinte pode funcionar:

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
Author: SchmitzIT, 2015-04-24 04:36:14

Pode ser por causa da restauração do arquivo de backup de versão SQL Server 2012 no servidor SQL 2008 R2 ou ainda menos.

 155
Author: Subhash Makkena, 2013-10-14 03:38:22

Finalmente consegui que este erro desaparecesse numa restauração. Eu me mudei para SQL2012 por frustração, mas acho que isso provavelmente ainda funcionaria em 2008R2. Tive de usar os nomes lógicos:

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

E a partir daí eu executei uma declaração de restauração com {[[2]} usando nomes lógicos.

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'
Quando acabou de restaurar, quase chorei de alegria. Boa sorte!
 13
Author: Sara Anderson Noonan, 2013-10-24 14:12:22

Abaixo podem ser duas razões para esta questão:

  1. Backup feito em SQL 2012 e restaurar o Headeronly foi feito em sql 2008 R2

  2. A cópia de segurança está corrompida.

Se corrermos abaixo do comando, podemos encontrar sempre o erro verdadeiro:

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

Dê a localização completa do seu ficheiro de base de dados no quot

Espero que ajude.
 1
Author: Keren Caelen, 2018-06-20 10:08:21