Error de restauración de la base de datos de SQL Server: la conversión especificada no es válida. (SqlManagerUI)

91

Estoy usando SQL Server 2008 R2 Standard (versión 10.50.1600.1) para mi sitio web de producción y la edición SQL Server Express con Advanced Services (v10.50.1600.1) para mi localhost como base de datos.

Hace unos días, mi SQL Server se bloqueó y tuve que instalar una nueva versión 2008 R2 Express en mi host local. Funcionó bien cuando restauré algunas versiones anteriores tomadas de la edición Express, pero cuando trato de restaurar la base de datos desde un .bakarchivo que se toma del servidor de producción, está causando el siguiente error:

Error: la conversión especificada no es válida. (SqlManagerUI)

y cuando intento restaurar la base de datos usando el 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'

Genera un error diferente

Msg 3154, nivel 16, estado 4, línea 1
El conjunto de copia de seguridad contiene una copia de seguridad de una base de datos que no es la base de datos de 'Publicaciones' existente.
Msg 3013, nivel 16, estado 1, línea 1
RESTORE DATABASE finaliza de forma anormal.

He verificado las versiones. Todos parecen coincidir para mí como se muestra en la imagen de abajo

Anteriormente, podía restaurar una base de datos de la versión estándar a la edición rápida, pero ahora falla. Eliminé la base de datos e intenté recrearla. Eso también falla.

No estoy seguro de qué estoy haciendo mal. Agradecería ayuda en esto con respecto

El problema se resolvió ya que parece que el archivo .bak estaba dañado. Cuando lo probé con un archivo diferente funcionó.

Aprendizaje
fuente
No soy profesional en esto, pero una pregunta rápida, ¿es compatible la arquitectura x86 y x64 en la base de datos?
Gustav Klimt
Tenía una base de datos de restauración anterior en ese momento y no enfrenté ningún problema de este tipo. por alguna razón, ahora genera errores, no estoy seguro de si la intercalación del servidor de base de datos está creando algún problema
Aprendizaje
Intente agregar ,REPLACEal comando T-SQL para sobrescribir la base de datos existente de AlHabtoorPublications.
SchmitzIT
Hoy encontré el mismo problema en el trabajo. Parece que comprobar el tamaño del archivo no es suficiente. Parece que el archivo es muy sensible. Resolvió el problema comprimiendo el archivo antes de ejecutar la transferencia.
rofans91
Scenerio Tomé una copia de seguridad de la base de datos en SQL SERVER 2008 e intenté restaurarla en SQL SERVER 2008 R2. Idealmente, debería funcionar bien, pero al seleccionar el archivo de copia de seguridad, SQL Management Studio 2208 R2 estaba generando el error "No se especifica la conversión especificada. (SqlManagerUI)". Razón y solución de problemas Esto se debió a la corrupción del archivo .BAK durante la transferencia FTP (el modo de transferencia está configurado en ASCII). Recuerde siempre establecer el modo de transferencia FTP en BINARIO mientras transfiere el archivo .BAK de la base de datos.
Rohan Sarkar

Respuestas:

40

La GUI puede ser voluble a veces. El error que obtuvo al usar T-SQL se debe a que está intentando sobrescribir una base de datos existente, pero no especificó sobrescribir / reemplazar la base de datos existente. Lo siguiente podría 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.
SchmitzIT
fuente
Extraño, reutilicé tu declaración original. En cualquier caso, lo único que agregué fue la última línea: , REPLACE
SchmitzIT
1
De hecho, Failed: 38indica reached end of the file. (En una ventana de comando, ejecute NET HELPMSG 38). Eso generalmente indica una copia de seguridad corrupta: stackoverflow.com/questions/5656363/…
SchmitzIT
Probé la restauración con un archivo .bak un poco más antiguo que se restauró sin ningún problema. Parece que este archivo .bak en particular está dañado
Aprendizaje
Podría haber sido el resultado del accidente. Podría haber estropeado partes del disco. Sin embargo
me
Su secuencia de comandos genera el siguiente error Msg 3203, Nivel 16, Estado 1, Línea 1 La lectura en "C: \ Publications.bak" falló: 38 (no se pudo recuperar el texto de este error. Razón: 15105) Msg 3013, Nivel 16, Estado 1 , La línea 1 RESTORE DATABASE está terminando de forma anormal.
Aprendiendo el
163

Podría deberse a la restauración del archivo de copia de seguridad de la versión de SQL Server 2012 en SQL Server 2008 R2 o incluso menos.

Subhash Makkena
fuente
4
En su lugar, sería necesario utilizar "Generar secuencia de comandos".
kroiz
4
Este era mi problema. Parece que no sería demasiado difícil para la EM dar un mensaje más útil para algunos de estos casos.
John Gilmer
Pinal Dave explica las razones aquí - blog.sqlauthority.com/2015/06/01/…
shrivb
15

Finalmente obtuve este error para desaparecer en una restauración. Me mudé a SQL2012 por frustración, pero supongo que esto probablemente aún funcionaría en 2008R2. Tuve que usar los nombres lógicos:

RESTORE FILELISTONLY
FROM DISK = location of your.bak file

Y a partir de ahí ejecuté una declaración de restauración con el MOVEuso de nombres 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'

Cuando terminó de restaurar, casi lloré de alegría.

¡Buena suerte!

Sara Anderson Noonan
fuente
4

A continuación, puede haber 2 razones para este problema:

  1. La copia de seguridad realizada en SQL 2012 y la restauración del encabezado solo se realizó en SQL 2008 R2

  2. El medio de respaldo está dañado.

Si ejecutamos el comando debajo, podemos encontrar el error real siempre:

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

Proporcione la ubicación completa de su archivo de base de datos en el quot

Espero eso ayude

Keren Caelen
fuente