2011-12-13 100 views
37

He estado leyendo MUCHAS publicaciones de google y preguntas de StackOverflow sobre cómo restaurar una base de datos en SQL Server desde un archivo .bak.Abrir un archivo SQL Server .bak (No restaurar!)

Pero ninguno de ellos indica cómo LEER las tablas en la base de datos de copia de seguridad. (Ninguno que pude encontrar de todos modos?)

Solo quiero ver algo de información antigua que ahora ha sido eliminada, sin restaurar realmente la base de datos completa. ¿Esto es posible?

.

EDIT:

solo quería publicar mi solución T-SQL para el problema, para que otros puedan usarla y puedo volver atrás y mirar hacia arriba;)

Primero creó una nueva base de datos llamada backup_lookup y la desconectó. Después de esto pude restaurar mi antigua base de datos mydb a la nueva, sin tocar el original.

USE master 
GO 
RESTORE DATABASE backup_lookup 
FROM DISK = 'D:\backup\mydb.bak' 
WITH REPLACE, 
MOVE 'mydb' TO 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\backup_lookup.mdf', 
MOVE 'mydb_log' TO 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\backup_lookup_log.ldf' 
GO 

espero que esto ayude :)

Respuesta

29

Desde SQL Server 2008 SSMS (SQL Server Management Studio), simplemente:

  1. conectarse a la instancia de base de datos (por ejemplo, "localhost \ sqlexpress")
  2. O bien:

    • a) Seleccione la base de datos que desea restaurar; o, como alternativa,
    • b) Simplemente cree una nueva base de datos vacía para restaurar.
  3. botón derecho del ratón, Tareas, Restaurar, Base de Datos

  4. de dispositivos, [...], Añadir, busque el archivo .bak
  5. Seleccione la copia de seguridad.
    Elija "sobrescribir = Y" en las opciones.
    Restaurar la base de datos
  6. Debe decir "100% completado", y su base de datos debe estar en línea.

PD: Una vez más, hago hincapié en: usted puede hacer esto en una "base de datos de cero" - no lo hace necesita sobrescribir la base de datos actual. Pero usted hace necesita RESTAURAR.

PPS: También puede lograr lo mismo con los comandos de T-SQL, si desea crear una secuencia de comandos.

+0

Ah, por lo que sólo podría hacer una base de datos de forma temporal y restaurarla en, y luego eliminarla sin ningún efecto en mi base de datos original? :) – Behrens

+0

Sí, exactamente :) – paulsm4

+0

+1 y la respuesta se aceptó debido a una solución gratuita :) – Behrens

9

La única solución viable es restaurar el archivo.bak. Los contenidos y la estructura de esos archivos son no documentados y, por lo tanto, no hay forma (para no hacer un truco horrible) de hacer que esto funcione, definitivamente no vale la pena el tiempo y el esfuerzo.

La única herramienta que soy consciente de que puede dar sentido a .bak archivos sin restaurar ellas es Red-Gate SQL Compare Professional (y los datos de SQL que se acompañan Compara) que le permiten comparar su estructura de base de datos con el contenido de un archivo .bak. Las herramientas de Red-Gate son absolutamente maravillosas, muy recomendables y vale la pena cada centavo que cuestan.

Y acabo de comprobar su sitio web: parece que puede restaurar una sola tabla desde un archivo .bak con SQL Compare Pro. :-)

0

No parece posible con SQL Server 2008 solo. Necesitará la ayuda de una herramienta de terceros.

Se le ayudará a hacer su acto .bak como una base de datos activa:

http://www.red-gate.com/products/dba/sql-virtual-restore/

+1

¡Otra joya de Red-Gate! :-) –

+0

No entiendo muy bien por qué Microsoft no ha decidido hacer este tipo de característica disponible. Sería bueno para los negocios si lo hicieran .. – Nonym

+1

no para el negocio de Red-Gate, aunque ... –

9

No hay manera estándar de hacer esto. Debe utilizar herramientas de terceros como ApexSQL Restore o SQL Virtual Restore. Estas herramientas realmente no leen el archivo de copia de seguridad directamente. Consiguen que SQL Server "piense" en los archivos de respaldo como si fueran bases de datos en vivo.

+0

La restauración de SQL Virtual Restore finalizó el 6 de febrero de 2015. – mukama

1

sólo para añadir mi solución TSQL-guión:

primer lugar; agregue una nueva base de datos llamada backup_lookup. A continuación, sólo funciona esta escritura, la inserción de ruta raíz de sus propias bases de datos y ruta de archivo de copia de seguridad

USE [master] 
GO 
RESTORE DATABASE backup_lookup 
FROM DISK = 'C:\backup.bak' 
WITH REPLACE, 
MOVE 'Old Database Name' TO 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\backup_lookup.mdf', 
MOVE 'Old Database Name_log' TO 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\backup_lookup_log.ldf' 
GO 
Cuestiones relacionadas