SqlServerのテータベースを複製しようとしたら複製できない現象に遭遇しました。
さらに詳しく
いつもなら簡単にデータベースの複製ができるのにどうしちゃったのでしょうか?
データベースの複製に異常終了
【Sqlserver】データベースを複製してAccessで動くようにODBC設定VBAの実験準備(データベース複製実験2)
いつもなら何も考えずに手順通りに進んでいればデータベースの複製は完了していました。
それが突然できなくなってしまったのです。
「Fileおよびファイルグループの復元」では駄目
今までは何も考えずに、「Fileおよびファイルグループの復元」からバックアップの復元や複製をやっていました。
今回は、「Fileおよびファイルグループの復元」から複製を作ろうとするとエラーになります。
ちなみにこの違いを調べてみると、極少の情報なので正解かどうかはわかりませんが、
参考
●「Fileおよびファイルグループの復元」は、特定のファイルやファイルグループだけをバックしたものを復元
●「データベースの復元」は全体のバックアップを復元
のようです。(疑問)
更に、データベースを再表示させると、「復元しています・・・」となりフリーズ状態になります。
「データベースの復元」から更にチェック必要
どうも、「データベースの復元」からやらないとダメなようです。
しかし、普通にやっても更にエラーがでます。
FILESTREAMに関してエラー発生
いままで何の問題もなくデータベースの複製ができていたのに、
ココに注意
エラーが発生する原因がFILESTREAMの設定
をしてからだと気づきました。
FILESTREAMは既に使用することを断念していたので、FILESTREAM無効にしてみました。
ココがダメ
いままで構築してきたデータベースが無い
という真っ青になる現象になりました。
焦りながら、再度FILESTREAMを有効にしてデータベースを再起動すると元に戻りましたので安心しました。
しかし、本当に精神的に良くない仕組みです。
FileStrem1に上書きできません?エラー回避方法
エラーの内容をよくみて見ると「FileStream1に上書きできません」的な内容でした。
「データベースの復元」から「File」を選択して、FileStream1から、TESTに変更しました。
※この部分が、データベースなどが格納されているフォルダにFILESTREAMで設定したファイルを格納するためのフォルダを作成するようです。
注意ポイント
エラーの内容は、既にFileStream1というフォルダに別のデータベースのFILESTREAM設定でフォルダを作成しようとしたことに対するエラーだったようです。
しかし、ここまでやっても更にエラーが出てデータベースの復元ができません。
※前回はここまででエラーが出ずに復元されました。
復元オプション「既存のデータベースを上書きする」
更に、オプションへと進み復元オプション「既存のデータベースを上書きする」にチェックをいれてOKをしたら復元できました。
なんか、複製元のデータベースに上書きされてしまうような恐怖がありましたが、たぶん、既存というのは、複製する場合ではなく、既に存在するデータベースに復元する場合の事かと推測します。
いずれにしても、ここまでやってようやくデータベースの複製に成功しました。
まとめ(FILESTREAM有効には要注意)
この経緯としては、SqlServerには添付ファイル機能がないので、FILESTREAMという機能を使って添付ファイル機能を仕組みに実装しようと考えましたが、これが仇(あだ)となりました。
ココがポイント
FILESTREAMを有効にすると、データベースの復元でひと手間必要
になることが分かりました。
また、使わないからと一旦、FILESTREAM有効にした場合は、FILESTREAM無効にするとデータベースが見えなくなるという恐ろしい現象に遭遇することも体験しました。
自分の場合は、FILESTREAM機能は使いませんが、一旦有効にしてしまった以上、このまま使い続けるしかないということでしょうかね。
今回もいろいろと振り回された案件でした。