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.
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.
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.
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!
Abaixo podem ser duas razões para esta questão:
Backup feito em SQL 2012 e restaurar o Headeronly foi feito em sql 2008 R2
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.