私は12の異なるブログを読んだり、msdnの例を読んだりしましたが、それらは私のために機能していません。
最終的に私がやろうとしているのは、DBを本番インスタンスから開発インスタンスに、またはその逆に自動移動することです。
したがって、私が採用したアプローチは次のとおりです。
- 一時DBへのバックアップ/復元
- 一時DBをデタッチする
- mdfファイルとldfファイルを他のインスタンスにコピーします
- 再接続します。
私は1に固執していて、その理由がわかりません。私が読んだすべてのものは、これが機能しているはずだと主張しています。
注:dbName
復元先のデータベースに設定しました。また、名前空間内のクラスのインスタンスであるをrestore.Database = dbName
設定しました。restore
Restore
smo
mdf.LogicalFileName = dbName;
mdf.PhysicalFileName = String.Format(@"{0}\{1}.mdf", server.Information.MasterDBPath, dbName);
ldf.LogicalFileName = dbName + "_log";
ldf.PhysicalFileName = String.Format(@"{0}\{1}.ldf", server.Information.MasterDBPath, dbName);
restore.RelocateFiles.Add(mdf);
restore.RelocateFiles.Add(ldf);
restore.SqlRestore(server);
これは私が得ている例外です:
ファイル'D:\ MSSQL.MIQ_Dev \ MSSQL.2 \ MSSQL \ Data\MIQDesign2Detach.mdf'は上書きできません。データベース「MIQDesignTest2」で使用されています。
ファイル「MIQDesign」を「D:\ MSSQL.MIQ_Dev \ MSSQL.2 \ MSSQL \ Data\MIQDesign2Detach.mdf」に復元できません。WITH MOVEを使用して、ファイルの有効な場所を特定します。
ファイル'D:\ MSSQL.MIQ_Dev \ MSSQL.2 \ MSSQL \ Data\MIQDesign2Detach.ldf'は上書きできません。データベース「MIQDesignTest2」で使用されています。
ファイル「MIQDesign_log」を「D:\ MSSQL.MIQ_Dev \ MSSQL.2 \ MSSQL \ Data\MIQDesign2Detach.ldf」に復元できません。WITH MOVEを使用して、ファイルの有効な場所を特定します。
RESTOREステートメントの計画中に問題が特定されました。前のメッセージは詳細を提供します。
なぜこれが元のmdfを上書きしようとしているのですか?別の物理ファイル名RelocateFiles
に保存することを指定するものではありませんか?