web-dev-qa-db-ja.com

SQL Server .bakファイルを開く(復元しない!)

.bakファイルからSQL Serverのデータベースを復元する方法に関するGoogleの投稿とStackOverflowの質問をたくさん読んでいます。

しかし、それらのいずれも、データベースバックアップのテーブルを単に読み取る方法を述べていません。 (とにかく見つけられなかった?)

実際にデータベース全体を復元せずに、削除された古い情報をチェックアウトしたいだけです。これは可能ですか?

編集:

私は自分の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

これが役立つことを願っています:)

44
Behrens

SQL Server 2008 SSMS(SQL Server Management Studio)から、単純に:

  1. データベースインスタンスに接続します(たとえば、「localhost\sqlexpress」)
  2. どちらか:

    • a)復元するデータベースを選択します。または、代わりに
    • b)復元する新しい空のデータベースを作成します。
  3. 右クリック、タスク、復元、データベース

  4. デバイス、[...]、追加、.bakファイルの参照
  5. バックアップを選択します。
    オプションで「overwrite = Y」を選択します。
    データベースを復元します
  6. 「100%complete」と表示され、データベースがオンラインになっているはずです。

PS:繰り返しますが、「スクラッチデータベース」でこれを簡単に行うことができます。not現在のデータベースを上書きする必要があります。しかし、あなたはdoする必要があります[〜#〜] restore [〜#〜]

PPS:スクリプトを作成する場合は、T-SQLコマンドでも同じことを実行できます。

33
paulsm4

唯一実行可能な解決策は、.bakファイルをrestoreすることです。それらのファイルの内容と構造は文書化されていません、したがって、これを機能させる方法はありません(ひどいハック以外)-間違いなくあなたの時間と価値はありません努力!

.bakファイルを復元せずに理解できる唯一のツールは、 Red-Gate SQL Compare Professional (および付属のSQL Data Compare)です。 .bakファイルの内容に対するデータベース構造。 Red-Gateツールは非常に素晴らしいものです。非常に推奨されており、費用がかかるすべての価値があります。

そして、私は彼らのウェブサイトをチェックしました-SQL Compare Proで.bakファイルから単一のテーブルを実際に復元できるようです! :-)

11
marc_s

これを行う標準的な方法はありません。 ApexSQL Restore または SQL Virtual Restore などのサードパーティツールを使用する必要があります。これらのツールは、実際にはバックアップファイルを直接読み取りません。 SQL Serverは、バックアップファイルをライブデータベースであるかのように「考え」ます。

9
David Smithers

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
1
Behrens

SQL Server 2008だけでは不可能だと思われます。サードパーティのツールのヘルプが必要になります。

.bakをライブデータベースのように動作させるのに役立ちます。

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

0
Nonym