la familia de medios en el dispositivo está formada incorrectamente. SQL Server no puede procesar esta familia de medios

31

Estoy tratando de restaurar un .BAK en el servidor SQL pero aparece el siguiente error:

Mensaje 3241, Nivel 16, Estado 7, Línea 1 La familia de medios en el dispositivo 'c: \ glyn \ JA.bak' está formada incorrectamente. SQL Server no puede procesar esta familia de medios. Msg 3013, Nivel 16, Estado 1, Línea 1 RESTORE DATABASE está finalizando de manera anormal.

He intentado restaurar usando 2012, 2008 e incluso 2005 pero nada funciona, he usado la siguiente consulta y a través de Tasks >> Back uppero nada funciona, aquí está mi SQL:

RESTORE DATABASE JA FROM DISK='c:\glyn\JA.bak'

¿Alguien tiene alguna sugerencia? He leído que el bak podría estar dañado, me lo envió otro desarrollador en DVD que está trabajando en el proyecto.

Miedoso
fuente

Respuestas:

12

Si está intentando restaurar una base de datos más nueva a una versión SQL más antigua, siempre puede crear manualmente la base de datos en la versión SQL más antigua y utilizar la tarea: generar scripts e incluir los datos.

Guardar en archivo -> Avanzado -> Tipos de datos en script -> Esquema y datos .

También asegúrese de realizar un script para la versión del servidor .

Esta podría ser la única opción compatible si está tratando de pasar de SQL Server más reciente a una versión anterior.

Relacionado: ¿ Restaurar la copia de seguridad de SQL Server 2012 en una base de datos de SQL Server 2008?

A. Thomas
fuente
Parece un truco, pero supongo que esto solucionó este problema en mi caso.
jpierson
7

Encontré esto que dice que su archivo de copia de seguridad está dañado. Posiblemente transferido por FTP en modo de texto en lugar de binario.

Y este blog que enumera cómo alguien más solucionó el mismo problema.

Kenneth Fisher
fuente
8
"enumera cómo alguien más solucionó el mismo problema" en general en los sitios de la red SE, debe publicar las partes relevantes de cosas como publicaciones de blog; previene la caída del enlace
jcollum
6

Tuve el mismo problema, mi script estaba especificando el tipo de ARCHIVO incorrecto, tenía un .baky estaba especificando FILE = 2cuál es un .trn.

USE [master]
RESTORE DATABASE [MyNewDB] FROM
DISK = N'D:\MyOldDB.bak'
WITH
    FILE = 1, -- 1 = .bak, 2 = .trn type backup
    MOVE N'MyOldDB' TO N'd:\data\MyOldDB.mdf',
    MOVE N'MyOldDB_log' TO N'd:\data\MyOldDB_log.ldf',
    NOUNLOAD,
    STATS = 5    
GO

No estoy seguro de si el comando RESTORE detecta automáticamente o establece un valor predeterminado para esto ...

sonjz
fuente
1
El error gira alrededor de esto, el problema es cuando usa la GUI para restaurar bases de datos, SQL Managment Studio no le proporciona información detallada. Si intenta restaurar usando el script t-sql, el servidor sql le informará que use la opción MOVE.
dlopezgonzalez
5

Ejecute el siguiente script en los servidores SQL de origen y destino, las versiones deben coincidir o el destino debe tener una versión superior de SQL Server; de lo contrario, no podrá restaurar el archivo .bak:

SELECT @@Version
Shadi Namrouti
fuente
1
El punto sobre las versiones se ha repetido en otras respuestas.
Andriy M
1
@AndriyM tienes razón, pero faltaba una acción práctica. No estamos hablando de historia o geografía, se debe mencionar algún comando o código.
Shadi Namrouti
-4

elimine el archivo dañado y vuelva a ejecutar la copia de seguridad

tu mamá
fuente
44
Hola, bienvenido al sitio. Nos gustaría un poco más de detalles sobre por qué o cómo funcionaría esto.
Tom V - Equipo Mónica