dbschemaを複数のデータベース(クライアントごとに1つ)にデプロイする必要があるシステムを継承し、変更を自分のdevティアに展開するように夜間のビルドを設定しました)。時間の約50%は、それは素晴らしい作品が、他の50%は、私は、ビルドの途中でどこかにエラーが表示されます。TFSBuild - データベースの展開 - ファイルのロック違反があります
「D:\ビルド{プロジェクト} \ Devの夜のデータベースの更新\ BuildType \ TFSBuild (Rebuild; Deploy target)(3:18) - > (1) - > "プロジェクト:\ Dev夜間データベース更新\ Sources \ Database \ Database.dbproj" MSB4018:エラー "SqlDeployTask"タスクが予期せず失敗しました。 [プロジェクト:\ビルド{プロジェクト} \ Dev夜間データベース更新\ Sources \ Database \ Database.dbproj] C:\ Program Files \ MSBuild \ Microsoft \ VisualStudio \ v10.0 \ TeamData \ Microsoft.Data.Schema.TSqlTasks.targets (120,5):エラーMSB4018:ファイルロック違反があります。データベースファイルを使用する外部アプリケーションをすべて終了します。 [プロジェクト:\ビルド{プロジェクト} \ Dev夜間データベース更新\ Sources \ Database \ Database.dbproj]
私は見回しましたが、実際の解決策は見つかりませんでした。私は、次の繰り返しが始まるときにmsbuildがまだdbprojファイルを使用しているので、エラーが発生していると仮定します。私は最後の溝の努力として睡眠の仕事を入れてみましたが、それはまったく助けていません。
他の提案はありますか?
<Target Name="Client DB Deploy" Outputs="%(Database.Name)">
<MSBuild Projects="$(SolutionRoot)\Database\Database.dbproj"
Properties="Configuration=Default; OutDir=$(BinariesRoot)\$(Configuration)\;
DeployToDatabase=True;TargetDatabase=%(Database.Name);
TargetConnectionString=Data Source=$(DatabaseServer)%3BIntegrated Security=True;
AlwaysCreateNewDatabase=False;BlockIncrementalDeploymentIfDataLoss=False"
Targets="Rebuild;Deploy" />
<Copy SourceFiles="$(OutDir)..\Database.sql" DestinationFolder="$(OutDir)_SetupPackages\_Database\%(Database.Name)" />
<SleepTask Timeout="10000" /> <!--sleep the build to try and avoid file locks we get in the loop-->
複数のビルドを同時に実行していますか? –
ただ1つのビルドはありません –