none
データベースの復元方法について RRS feed

  • 質問

  • 現在、こちらの使用環境にてデータベースのバックアップおよび復元テストを行っております。
    ・Windows Server 2008 R2
    ・SQL Server 2008 R2(DBは「AAA」)

    バックアップと復元は以下のように行います。

    【bakファイルからの復元】
    ①DB「AAA」を「タスク」→「バックアップ」でフルバックアップして「AAA.bak」を作成します。

    ②DB「AAA」を「タスク」→「復元」で①の「AAA.bak」から復元を行う。

    【mdf、ldfからの復元】
    ①DB「AAA」を「タスク」→「デタッチ」を実施。
    「MSSQL\DATA」フォルダより、「AAA.mdf」「AAA_log.ldf」を作成します。

    ②「データベース」→「アタッチ」→ ①の「AAA.mdf」を選択し、復元する。

    この復元方法について質問があるのですが、

    《質問1》
    bakファイルから復元させる場合とmdf・ldfから復元させる場合、
    どのようなことが異なるのか教えてください。

    またデタッチの際、DBが削除されてしまいますが、mdf・ldfから復元後、
    とくに問題はないでしょうか?

    基本的に復元内容は同じであると考えておりますが、個人的には、
    デタッチによるDBの削除が、少し不安に感じてしまいます…。

    《質問2》
    「デタッチ」すると「データベース」からDB「AAA」が削除されたり、
    DB「AAA(シングルユーザー)」という名称になり、削除されなかったりしますが、
    これはどういう意味なのでしょうか?

    もし、この件についてわかる方がいらっしゃったら、ぜひご教授いただくたく、
    よろしくお願いいたします。
    2012年7月19日 5:45

回答

  • こんにちは、

    まず1つ大きな誤解をされている様なのですが、
    アタッチは復元(リストア)ではありません。

    紐付きの解かれたデータベースの実ファイルを、SQL Serverのインスタンスに紐付ける処理です。
    逆に、デタッチは紐付きを解く処理だと思って下さい。
    ※上手く伝わるでしょうか。。。

    質問2についてですが、
    すいませんがその様な現象を見た事がありません。
    デタッチしようとして別の事をしてしまったという可能性はありませんか?

    • 回答としてマーク Mariko1099 2012年7月20日 1:15
    2012年7月19日 6:39

すべての返信

  • こんにちは、

    まず1つ大きな誤解をされている様なのですが、
    アタッチは復元(リストア)ではありません。

    紐付きの解かれたデータベースの実ファイルを、SQL Serverのインスタンスに紐付ける処理です。
    逆に、デタッチは紐付きを解く処理だと思って下さい。
    ※上手く伝わるでしょうか。。。

    質問2についてですが、
    すいませんがその様な現象を見た事がありません。
    デタッチしようとして別の事をしてしまったという可能性はありませんか?

    • 回答としてマーク Mariko1099 2012年7月20日 1:15
    2012年7月19日 6:39
  • aviator__さま

    こんにちは。ご回答いただき、ありがとうございます。
    うまく表現していただき、ありがとうございます。
    なんとなくわかった気がします。

    バックアップファイルからデータを戻す言い方としては…
    ・bakファイルで復元する。
    ・mdfファイルでアタッチする。
    という言い方でよろしいでしょうか?

    仮に同じ時間帯でバックアップしたbakファイルとデタッチしたmdfファイルがあるとします。

    このbakファイルで復元したデータと、このmdfファイルでアタッチしたデータは、
    データの内容は全く同じになる、ということですよね?

    デタッチの際、DBが削除される点については、紐付きを解いただけで問題ないという事ですよね?

    ちなみに質問2ですが、さきほど、DB「AAA(シングルユーザー)」と出たので「F5」で
    最新の情報に更新したところ、消えました。基本的には削除されるみたいですね。
    2012年7月19日 8:02
  • バックアップファイルからデータを戻す言い方としては…
    ・bakファイルで復元する。
    ・mdfファイルでアタッチする。
    という言い方でよろしいでしょうか?

    細かいですが、※スルーして下さい。

    ・bakファイル"を"復元する。
    ・mdfファイル"を"アタッチする。
    という表現が正しいと思います。
    ※これらのファイルが制御する訳ではありませんので。

    仮に同じ時間帯でバックアップしたbakファイルとデタッチしたmdfファイルがあるとします。

    このbakファイルで復元したデータと、このmdfファイルでアタッチしたデータは、
    データの内容は全く同じになる、ということですよね?

    その認識で良いと思います。
    ※あくまでデータのみについてですが・・・

    デタッチの際、DBが削除される点については、紐付きを解いただけで問題ないという事ですよね?

    はい。

    ただし ここ にもある通り、アタッチはデータベースのコピー等を目的とした機能です。
    目的に合わせた機能を使う事をお勧めします。

    2012年7月19日 9:42
  • aviator__さま

    こんにちは。ご回答いただき、ありがとうございます。

    細かい表現まで教えていただいて、納得です。

    とても勉強になりました。本当にありがとうございました。
    2012年7月20日 1:15