Открытие .bak-файла SQL Server (не восстанавливается!) - PullRequest
44 голосов
/ 14 декабря 2011

Я читал МНОГО постов 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

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

Ответы [ 5 ]

31 голосов
/ 14 декабря 2011

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

  1. Подключение к экземпляру вашей базы данных (например, «localhost \ sqlexpress»)
  2. Или:

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

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

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

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

11 голосов
/ 14 декабря 2011

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

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

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

9 голосов
/ 15 марта 2013

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

1 голос
/ 13 октября 2013

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

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

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
0 голосов
/ 14 декабря 2011

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

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

http://www.red -gate.com / Продукты / дБ / SQL-виртуальное восстановление /

...