3

私は12の異なるブログを読んだり、msdnの例を読んだりしましたが、それらは私のために機能していません。

最終的に私がやろうとしているのは、DBを本番インスタンスから開発インスタンスに、またはその逆に自動移動することです。

したがって、私が採用したアプローチは次のとおりです。

  1. 一時DBへのバックアップ/復元
  2. 一時DBをデタッチする
  3. mdfファイルとldfファイルを他のインスタンスにコピーします
  4. 再接続します。

私は1に固執していて、その理由がわかりません。私が読んだすべてのものは、これが機能しているはずだと主張しています。

注:dbName復元先のデータベースに設定しました。また、名前空間内のクラスのインスタンスであるをrestore.Database = dbName設定しました。restoreRestoresmo

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に保存することを指定するものではありませんか?

4

2 に答える 2

-3

I ran into a similar problem and I found this solution to be quite helpful.

Take a look - http://www.eggheadcafe.com/software/aspnet/32188436/smorestore-database-name-change.aspx

于 2010-11-23T21:34:53.167 に答える