Подтвердить что ты не робот

Открытие SQL файла .bak SQL (не восстановление!)

Я читал много сообщений google и вопросы StackOverflow о том, как восстановить базу данных в SQL Server из файла .bak.

Но ни один из них не указывает, как просто ПРОЧТИТЬ таблицы в резервной копии базы данных. (Нет, что я мог найти в любом случае?)

Я просто хочу проверить некоторую старую информацию, которая теперь была удалена, без фактического восстановления полной базы данных. Возможно ли это?

.

EDIT:

Я просто хотел опубликовать решение T-SQL для проблемы, поэтому другие могут использовать его, и я могу вернуться и посмотреть его;)

Сначала я создал новую базу данных под названием backup_lookup и отключил ее. После этого я мог бы восстановить мою старую базу данных mydb в новую, не касаясь моего оригинала.

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

Надеюсь, это поможет:)

4b9b3361

Ответ 1

Из SQL Server 2008 SSMS (SQL Server Management Studio) просто:

  • Подключитесь к экземпляру базы данных (например, "localhost\sqlexpress" )
  • Либо:

    • a) Выберите базу данных, которую вы хотите восстановить; или, альтернативно
    • b) Просто создайте новую, пустую базу данных для восстановления.
  • Щелкните правой кнопкой мыши, Задачи, Восстановить, База данных

  • Устройство, [...], Добавить, Перейдите в ваш .bak файл.
  • Выберите резервную копию.
    Выберите опцию "переписать = Y". Восстановить базу данных
  • Он должен сказать: "100% завершено", и ваша база данных должна быть в режиме онлайн.

PS: Опять же, я подчеркиваю: вы можете легко сделать это на "базе данных нуля" - вам нужно не перезаписать текущую базу данных. Но вам нужно выполнить ВОССТАНОВИТЬ.

PPS: вы также можете выполнить то же самое с командами T-SQL, если хотите script его.

Ответ 2

Единственное работоспособное решение - восстановить файл .bak. Содержимое и структура этих файлов не документированы, и поэтому на самом деле нет способа (кроме ужасного взлома), чтобы заставить это работать - определенно не стоит вашего времени и усилий!

Единственный инструмент, который я знаю об этом, может иметь смысл в файлах .bak без их восстановления: Red-Gate SQL Compare Professional ( и сопровождающий SQL Data Compare), которые позволяют сравнить вашу структуру базы данных с содержимым файла .bak. Инструменты Red-Gate абсолютно изумительны - очень рекомендуется и стоит каждого копейки, которые они стоят!

И я просто проверил их веб-сайт - кажется, что вы действительно можете восстановить одну таблицу из файла .bak с помощью SQL Compare Pro!: -)

Ответ 3

Нет стандартного способа сделать это. Вам необходимо использовать сторонние инструменты, такие как ApexSQL Restore или SQL Virtual Restore. Эти инструменты действительно не читают файл резервной копии напрямую. Они заставляют SQL Server "думать" о резервных файлах, как если бы это были активные базы данных.

Ответ 4

Просто добавьте мое решение, основанное на TSQL:

Прежде всего; добавьте новую базу данных с именем backup_lookup. Затем просто запустите этот script, вставив корневой путь и резервную копию собственных собственных баз данных

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

Ответ 5

Это не похоже на SQL Server 2008. Вам понадобится помощь стороннего инструмента.

Это поможет вам сделать ваш .bak действующим как живая база данных:

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