私はデータベースを使用するプロジェクトに取り組んでおり、私はそれをユニットテストしています。現在、テストではデータベースが.mdf
というファイルとして作成され、使用されています。.mdfファイルを上書きする方法
私がやりたかったのは、この.mdf
のコピーを別の場所に作成することです。そして、各テストの前に元の.mdf
ファイルを置き換えてください。問題は、そうしようとすると、ファイルが別のプロセスで使用されているということです。私はプロセスがsqlservr.exe
であることを知りました。
私の質問は:私はそれを置き換えることができるようにファイルを使用してサーバーを停止する方法はありますか?私はSQL Serverのバックアップと復元のオプションを試してみましたが、処理速度が遅すぎるために十分ではありません。
ご協力いただければ幸いです。
UPDATE:問題の
オクラホマので、もう少し情報。基本的には、単体テストのパフォーマンスを向上させることに取り組んでいます。ほとんどのテストではデータベースへの接続が必要なので、.mdf
ファイルにLocalDbがあります。このファイルはTestFixtureSetup
の間に作成されます。次に、各テスト(SetUp
中)の前に、データベースはSQLコマンドで消去されます。それは、各テストのために新しいデータベースを再作成する最も効率的な方法ではないようです。そこで、私は今のところ2つの異なる方法を試しました。
- SQL BACKUPとRESTOREコマンドを使用してください。これは動作しますが、テストの実行時間が長くなります。
sqlservr.exe
プロセスを終了し、ファイルをローカルにコピーしてからsqlservr.exe
を再起動します。これも機能しますが、実行時間も長くなります。
基本的に、完全に空のデータベースを再作成するパフォーマンスを改善する方法についての提案を探しています。
サービス、コピーを停止し、再度起動? –
https://msdn.microsoft.com/en-AU/library/ms187858.aspxデタッチが動作する可能性がある –