El conjunto de copia de seguridad contiene una copia de seguridad de una base de datos distinta de la existente

485

Estoy tratando de restaurar un archivo de copia de seguridad de SQL Server para mi base de datos, pero arroja un error de la siguiente manera:

El conjunto de copia de seguridad contiene una copia de seguridad de una base de datos distinta de la existente

Mi base de datos en SQL Server 2008 y el archivo de respaldo es en 2005.

¿Cual puede ser el problema?

RD
fuente
95
La respuesta altamente votada a continuación es un mazo para romper una nuez. Es muy probable que el problema no haya seleccionado la opción " Sobrescribir la base de datos existente (CON REEMPLAZO) " en la ventana Restaurar> Opciones . Tuve este problema desde la línea de comandos usando WITH MOVE, y se solucionó usando WITH REPLACE, MOVE.
James McCormack
Tengo el mismo error con una de mis bases de datos, pero solo cuando el Agente SQL Server está desactivado. Si lo enciendo, no hay ningún error y puedo restaurar sin problemas. Mi archivo BAK solo contiene una única base de datos, y ese nombre de base de datos (y los nombres de archivo lógicos) son únicos en mi servidor.
Webs de desarrolladores

Respuestas:

807

Yo también me encontré con este problema.

Solución:

  • No cree una base de datos vacía y restaure el .bakarchivo.
  • Use la opción 'Restaurar base de datos' accesible haciendo clic derecho en la rama "Bases de datos" de SQL Server Management Studio y proporcione el nombre de la base de datos mientras proporciona la fuente para restaurar.
  • Cambie también los nombres de archivo en "Archivos" si la otra base de datos todavía existe. De lo contrario, aparece "El archivo '...' no se puede sobrescribir. Está siendo utilizado por la base de datos 'yourFirstDb'".
sunil_philip
fuente
102
Sería muy fácil para SSMS decirme esto cuando ocurra el error
cja
16
+1 para " No cree una base de datos vacía y restaure el archivo .bak " ... sí, eso lo resuelve. (¿Pero por qué no tuve este problema todas las otras veces que hice lo mismo? ¿Y no empezamos a hacer esa pre-creación en primer lugar como una solución para algún otro mensaje de error inexplicable?:])
Reg Editar
Alguien debería marcar esto como una respuesta porque era el consejo que necesitaba para restaurar con éxito una copia de seguridad.
Doreen
2
En Restaurar base de datos, fui a Archivos, Restaurar como y puse nombres de archivo únicos, ya que todavía tenía los nombres originales para los datos y los archivos de registro.
Dave Mateer
2
Cambie también los nombres de archivo en "Archivos" si la otra base de datos todavía existe. De lo contrario, aparece "El archivo '...' no se puede sobrescribir. Está siendo utilizado por la base de datos 'yourFirstDb'".
Verena Haunschmid
175

Ya sea:

1) Use WITH REPLACEmientras usa el RESTOREcomando (si usa la GUI, se encuentra en Opciones -> Sobrescribir la base de datos existente ( WITH REPLACE)).

2) Deletela base de datos más antigua que está en conflicto y restaurar nuevamente usando el RESTOREcomando.

Consulte el enlace para más detalles.

Amarnath
fuente
1
copiado del enlace y proporcionó el enlace también .. * suspiro * (inteligente)
Abhijeetchindhe
44
@Abhijeetchindhe jaja .. Reutilización y cortesía .. :)
Amarnath
:) Un software honesto Er eres! De todos modos, esa es la mejor respuesta para esta pregunta. Y vota por el tiempo que te has tomado para encontrarlo :)
Abhijeetchindhe
1
Tuve el mismo problema que el op y esta respuesta funciona bien. +1
Esteban
1
Esta opción CON REEMPLAZAR también fue la solución que necesitaba. ¡Gracias!
Adam
90

Primero cree una base de datos en blanco con el mismo nombre. Luego ve por la opción de restauración

En Opciones en el panel izquierdo, no olvide seleccionar

  • Sobrescribir la base de datos existente
  • Conservar la configuración de replicación

ingrese la descripción de la imagen aquí

Eso es

HimalayaCoder
fuente
51

Enfrenté el mismo problema y encontré la solución al hacer esto, usando SSMS 2014

- Simplemente seleccione la opción Sobrescribir la base de datos existente (CON REEMPLAZAR) 

Base de datos existente> Tarea> Restaurar> Base de datos

Smit Patel
fuente
34
USE [master];
GO

CREATE DATABASE db;
GO

CREATE DATABASE db2;
GO

BACKUP DATABASE db TO DISK = 'c:\temp\db.bak' WITH INIT, COMPRESSION;
GO

RESTORE DATABASE db2
  FROM DISK = 'c:\temp\db.bak'
  WITH REPLACE,
  MOVE 'db' TO 'c:\temp\db2.mdf',
  MOVE 'db_log' TO 'c:\temp\db2.ldf';
Elsoni
fuente
33

Sencillos 3 pasos:

1- Haga clic derecho en la base de datos → Tareas → restaurar → Base de datos

2- Marque Devicecomo fuente y ubique el archivo .bak (o .bak comprimido)

3- En el panel izquierdo, haga clic en optionsy:

  • marque Sobrescribir la base de datos existente.
  • desmarque Realizar copia de seguridad de registro de cola antes de restaurar
  • marque Cerrar la conexión existente a la base de datos de destino.

¡Otras opciones son realmente opcionales (e importantes, por supuesto)!

Ali Sheikhpour
fuente
23

¡Es porque los archivos .mdfy .ldfdel original se Dbubicaron en quizás c:\programFile\....y esta información se guarda en la Copia de seguridad!

Si crea la misma base de datos en un servidor SQL diferente donde está instalada la instalación, c:\program Files (x86)\ ....no puede restaurar como de costumbre. Necesita reubicar la ruta para .mdfy .ldfArchivos.

Por lo tanto:

  • Cree una base de datos vacía en el nuevo servidor

  • Haga clic derecho en el Db vacío> Tareas> Restaurar> Base de datos> haga clic en Dispositivo, seleccione sus .bakarchivos> Seleccione Db para restaurar en

  • haga clic en Archivos en el lado izquierdo> Seleccione "Reubicar todos los archivos a la carpeta"
  • haga clic en Opciones en el sitio izquierdo> haga clic en Sobrescribir

¡Hecho!
¡Espero eso ayude!

AYUDANTE
fuente
16

Me había encontrado con un problema similar hoy. Intenté todas las soluciones anteriores pero no funcionó. Publicando mi solución aquí.

No olvide desmarcar Tail-Backup antes de restaurar

No olvide desmarcar Tail-Backup antes de restaurar

¡Espero que ayude a otros también!

immayankmodi
fuente
Esto es lo que funcionó para mí. ¡Gracias!
Bill Norman el
16

Si está utilizando el enfoque de secuencia de comandos y tiene un error relacionado con los archivos LDF y MDF, primero puede consultar el archivo de copia de seguridad para los nombres lógicos (y otros detalles) de los archivos en el conjunto de copia de seguridad, utilizando lo siguiente:

-- Queries the backup file for the file list in backup set, where Type denotes 
-- type of file. Can be L,D,F or S
-- info: https://docs.microsoft.com/en-us/sql/t-sql/statements/restore-statements-filelistonly-transact-sql
RESTORE FILELISTONLY FROM DISK = 'C:\Temp\DB_backup.bak'
GO

Obtendrá resultados similares a los siguientes:

ingrese la descripción de la imagen aquí

Y luego puede usar esos nombres lógicos en las consultas:

    -- Script assumes you want MDF and LDF files restored on separate drives. Modify for your scenario
    RESTORE DATABASE DB 
    FROM DISK='C:\Temp\DB_backup.bak'
    WITH REPLACE,
      MOVE 'DB' TO 'E:\MSSQL\Data\DB.mdf', -- "DB" is the mdf logical name from query above
      MOVE 'DB_log' TO 'F:\MSSQL\Logs\DB.ldf'; -- "DB_log" is LDF logical name from query above

Se RESTORE FILELISTONLY puede encontrar más información sobre los documentos de SQL Server .

usuario919426
fuente
Tuve el mismo problema en la pregunta, y en mi caso la copia de seguridad de Db fue desde un servidor remoto y tuve que crear la misma estructura de carpetas en mi unidad D que se parece a la salida de la primera consulta. Luego, la segunda consulta funcionó correctamente y se restauró la base de datos.
rinilnath
11

También es importante asegurarse de que el nombre de su base de datos coincida con el nombre de la base de datos en la copia de seguridad que está intentando restaurar. Si no coincide, obtendrá el mismo error.

Andrew Marais
fuente
Esto parece ser especialmente cierto si tiene múltiples archivos / grupos de archivos y tablas particionadas
AlexC
9

Antes de hacer cualquier otra cosa, confirme si su copia de seguridad es Completa o Diferencial. Si está intentando crear una nueva base de datos a partir de una copia de seguridad diferencial, no importa lo que haga, encontrará el error.

Tots Benedicto
fuente
1
Este fue el problema que estaba experimentando, ¡así que gracias por esto! (No sabía que el archivo de respaldo era en realidad un respaldo diferencial). Aquí se explica cómo verificar: "RESTORE HEADERONLY FROM DISK = 'C: \ myfile.bak'" En los resultados, BackupType de 1 = Copia de seguridad completa. BackupType of 5 = Copia de seguridad diferencial.
Wimpie Ratte
9

system.data.sqlclient.sqlerror: el conjunto de copia de seguridad contiene una copia de seguridad de una base de datos distinta de la base de datos existente 'Dbname'

Me he encontrado para encontrar soultion

  1. ¡No cree una base de datos con el mismo nombre o con un nombre de base de datos diferente! Importante.

  2. haga clic derecho en la base de datos | Tareas> Restaurar> Base de datos

  3. En "Fuente para restaurar", seleccione "Desde el dispositivo"

  4. Seleccione el archivo .bak

  5. Seleccione la casilla de verificación para la base de datos en la vista de cuadrícula a continuación

  6. A DataBase: "Aquí puede escribir Nuevo nombre de base de datos" (Ej: DemoDB)

  7. No seleccione la base de datos existente de DropDownlist

  8. Ahora haga clic en el botón Aceptar, creará un nuevo Databse y restaurará todos los datos de su archivo .bak.

puedes obtener ayuda de este enlace incluso

Espero que ayude a resolver su problema ...

akshay5662
fuente
1
"¡No cree una base de datos con el mismo nombre o con un nombre de base de datos diferente! Importante". ¿Qué quieres decir?
Sajid
6

Esto causa siempre debido a la incompatibilidad de la versión. siga estos pasos para resolver:

Paso 1: crea una base de datos con tu nombre preferido. (En nuestro caso AdventureWorks)

Paso 2: Escriba, haga clic en la base de datos y haga clic en Tareas >> Restaurar >> Base de datos ...

ingrese la descripción de la imagen aquí

Paso 3: en la pantalla de restauración, vaya a la tercera selección de Opciones. Ahora seleccione la casilla de verificación "Sobrescribir la base de datos existente (CON REEMPLAZAR)"

ingrese la descripción de la imagen aquí

Paso 4: haz clic en Aceptar. Debería restaurar con éxito la base de datos.

Nota: Cuando restaure una base de datos CON REEMPLAZAR, sobrescribirá la base de datos anterior.

Alireza Abdollahnejad
fuente
Gracias Alireza por tu esfuerzo. Pero estamos usando la consulta en lugar de la GUI.
Pugal
5

El mismo problema conmigo. La solución para mí es:

  1. Haga clic derecho en la base de datos.
  2. Seleccione tareas, seleccione restaurar base de datos.
  3. Haga clic en las opciones en el lado izquierdo.
  4. Marque la primera opción Sobrescribir la base de datos existente (CON REEMPLAZAR).
  5. Vaya a General, seleccione la base de datos de origen y destino.
  6. Haga clic en Aceptar, eso es todo
Aayush Verma
fuente
3

Solo estaba tratando de resolver este problema.

Había intentado todo, desde ejecutar como administrador hasta las sugerencias que se encuentran aquí y en otros lugares; lo que me resolvió al final fue marcar la opción "reubicar archivos" en la pestaña de propiedades Archivos.

Esperemos que esto ayude a alguien más.

Clint
fuente
3

Tuve que crear una nueva base de datos en mi local para probar y tuve una copia de seguridad de mi producto. Primero creé el db e intenté ejecutar el BAK encima del nuevo db que me produjo este error. Eliminé el db y lo restauré mientras obtenía el nuevo nombre de db en la pantalla de restauración. La base de datos se creó automáticamente al restaurar.

Angelina Ilieva
fuente
3

Algunos de ustedes han complicado demasiado esto. Encontré que esto es extremadamente simple.

1) ¡Cree una base de datos con el mismo nombre que el nombre de la base de datos de su archivo .bak!

2) haga clic derecho en la base de datos | Tareas> Restaurar> Base de datos

3) En "Fuente para restaurar", seleccione "Desde el dispositivo"

4) Seleccione el archivo .bak

5) Seleccione la casilla de verificación de la base de datos en la vista de cuadrícula a continuación

6) En "Seleccionar una página" a la derecha, seleccione "Opciones"

7) Seleccione la casilla de verificación etiquetada "Conservar la configuración de replicación (CON KEEP_REPLICATION)

Ahora regrese a la página General y haga clic en Aceptar para restaurar la base de datos ... Eso es todo.

Rolon
fuente
¿Dónde está ese "seleccione una página"?
KansaiRobot
2

Obtuve el trabajo de manera alternativa, usando Generar scripts. Eso funcionó para mí ya que Backup-Restore no ayudó a resolver el problema debido al mismo error.

Altaf Patel
fuente
2

En las Opciones, cambie el nombre del archivo "Restaurar como" a la nueva base de datos mdf y ldf. Hace referencia a los archivos .mdf y .ldf de la base de datos de origen.

Priyanka Rawat
fuente
1

Puede restaurar a una nueva base de datos, verificar la sintaxis del nombre del archivo, estará en el archivo de registro, para la nueva versión SQL será un sufijo "_log"

verifique la sobrescritura del indicador de base de datos existente en la pestaña de opciones

Fabio

Fabio
fuente
0

Estoy seguro de que este problema está relacionado con los permisos de archivos y carpetas.

Papas
fuente
0

Estaba tratando de restaurar una base de datos de producción a una base de datos provisional en el mismo servidor.

Lo único que funcionó en mi caso fue restaurar a una nueva base de datos en blanco. Esto funcionó muy bien, no trató de sobrescribir los archivos de producción (lo que haría si solo restaurara el archivo de copia de seguridad de producción a la base de datos provisional existente). Luego elimine la base de datos anterior y cambie el nombre: los archivos mantendrán el nuevo nombre temporal, pero en mi caso eso está bien.

(O bien, elimine primero la base de datos provisional y luego puede restaurarla a una nueva base de datos con el mismo nombre que la base de datos provisional)

Mike Nelson
fuente
0

en lugar de hacer clic en Restaurar base de datos, haga clic en Restaurar archivo y grupos de archivos.

eso funciona en mi servidor sql

Ali Sadri
fuente
0

Esto me ayudó a importar el archivo de respaldo desde la unidad del sistema

  1. Cree una base de datos con el mismo nombre (preferiblemente) que el nombre de la base de datos de su archivo .bak
  2. Haga clic derecho en la base de datos> Tareas> Restaurar> Base de datos
  3. En "Fuente para restaurar", seleccione "Desde el dispositivo"
  4. Seleccione el archivo .bak seleccionando la ruta del sistema
  5. Seleccione la casilla de verificación de la base de datos en el cuadro de lista a continuación
  6. En "Seleccionar una página" a la derecha, seleccione "Opciones"
  7. Seleccione la casilla de verificación etiquetada "Conservar la configuración de replicación (CON MANTENER_REPLICACIÓN)
  8. Seleccione la casilla de verificación para Sobrescribir la base de datos existente (CON REEMPLAZO) Ahora Regrese a la página General y haga clic en Aceptar para restaurar la base de datos ...
Prajwal Bhat
fuente