テストエクスプローラーでテスト実行時にローカルデータベースコピーに失敗する

ローカルデータベースを利用するテストプロジェクトを使って開発しているのですが、たまにローカルデータベースのファイルが別のプロセスで使用されていて、テスト実行に失敗します。

急に発生してびっくりするので、後ですぐに分かるようにメモしておきます。

環境:Visual Studio 2013 + NUnit。Visual Studio上のテストエクスプローラーでNUnitテストを実行するように設定しています。

エラーメッセージはこんな感じ。

「~.mdf(.ldf)を<binフォルダパス>にコピーできません。別のプロセスで使用されているため、プロセスはファイルにアクセスできません。」

「~.mdf(.ldf)を<binフォルダパス>にコピーできませんでした。10回の再試行回数を超えたため、失敗しました。」

これが出るとテストを再実行してもうまくいかない。

解決策は、エラーメッセージからわかるとおりデータベースファイルを掴んでいるプロセスを終了する。

私の環境では、タスクマネージャーを立ち上げ、「SQL Server Windows NT – 64bit」というプロセスをを選んで、「タスクの終了」してから、再度テストを実行することで解決します。

前回実行時に立ち上げたローカルデータベースを動かすSQL Serverプロセスがうまく終了しなかったということでしょうね。