2011-10-18 5 views
1

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.TSqlTask​​s.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--> 

+0

複数のビルドを同時に実行していますか? –

+0

ただ1つのビルドはありません –

答えて

0

RunEachTargetSeparately = "true" またはUnloadProjectsOnCompletion = "真" のMSBuildタスクパラメータを追加してください。 http://msdn.microsoft.com/en-us/library/z7f65y0d.aspx

+0

ビルドにこれらを追加し、今週の助けになるかどうか確認してください –

+0

まだファイルロックの問題はありません:( –

関連する問題