SQL SERVER2016 バックアップと復元でエラー(メディアファミリ、メディアセットの概念)
SQL SERVER2016でバックアップを行うときに、通常は、「既存のすべてのバックアップ セットを上書きする」にチェックを入れてバックアップをしていたが、ファイルサイズを小さくしようと思い、「新しいメディア セットにバックアップし、すべての既存のバックアップ セットを消去する」の方を選択してバックアップを実行したところ、ファイルサイズが半分くらいになった。ところが、そのファイルを用いて復元を試みると、「メディア セットには 2 メディア ファミリが含まれていますが、1 だけが指定されています。すべてのメンバを指定してください。」というエラーが出て復元ができない。再度「既存のすべてのバックアップ セットを上書きする」でバックアップをしなおしてできたファイルで復元しようとしたが、やはり同じ結果になってしまった。もはや復元できないかと思ったが、通常「ファイルとファイル グループ」からバックアップファイルを選択して復元するが、今回は、「データベース」を選択して復元をすることにより、同一PC内で、同じデータベースの複製が出来上がった。その複製されたデータベースは、レコードの中身は同じものであるが、これをバックアップしてできたバックアップファイルを用いて復元を試みたところ、今度は別のPCでも復元ができた。この仕組はまだ勉強が足りないのでこれから勉強するが、とりあえずはデータを戻すことができてよかった。
追記(メディアファミリ、メディアセットの概念)
ファイルサイズが半分になったのは、2つのファイルに分散(メディアファミリ)されてバックアップされたからのようで、バックアップ先に2つのファイルをしていしてバックアップをしたためのようである。だから復元するにもその2つのバックアップファイルを追加してから復元する必要があるのだと思う。だからファイルの追加で1つか選択しないと「メディア セットには 2 メディア ファミリが含まれていますが、1 だけが指定されています。すべてのメンバを指定してください。」というエラーが出るのだと思う。2つのファイルを追加指定すると復元できるようである。
バックアップの際に、「既存のバックアップセットに追加」でバックアップを実行した場合、バックアップセットをどんどん追加して保存するらしく、ファイルサイズが2倍、3倍と増えてゆく。その2倍、3倍になったファイルを指定して復元しようとするときには、バックアップセットに複数のバックアップセットが並んでいる。1つを選んで復元できるが、そのままバックアップすれば当然ファイルサイズもバックアップセットを保持しているので、そのままである。したがって、バックアップの際に「新しいメディア セットにバックアップし、すべての既存のバックアップ セットを消去する」を選んでバックアップすると、もとのファイルサイズでバックアップが出来る。これを復元するときにはバックアップセットは1つしか候補に上がってこないし、それを用いて復元出来る。