В составе sql server 2005 есть команда массового копирования "bcp.exe" (http://msdn.microsoft.com/en-us/library/ms162802%28SQL.90%29.aspx)
Мы запускаем команду bcp из нашего скрипта msbuild, используя задачу exec. К сожалению, когда bcp не удается загрузить строку данных, сборка все равно завершается успешно.
Я попытался (согласно приведенному ниже фрагменту сценария сборки) указать файл ошибок и проверить его существование, к сожалению, это означает, что сборка всегда завершается неудачей, даже если bcp полностью завершается успешно, поскольку кажется, что bcp всегда будет создавать файл ошибок, даже если ошибок нет.
<ItemGroup>
<bcpFiles Include="$(DataPath)\*.txt" />
</ItemGroup>
<Delete Files="BcpErrors.txt" />
<Message Text="bcp $(DatabaseName).dbo.%(bcpFiles.FileName) in %(bcpFiles.FullPath) -eBcpErrors.txt -c -E -q -t"`" -r"`\n" $(bcpConnectionString)" />
<Exec Command="bcp $(DatabaseName).dbo.%(bcpFiles.FileName) in %(bcpFiles.FullPath) -eBcpErrors.txt -c -E -q -t"`" -r"`\n" $(bcpConnectionString)" />
<Error Condition="Exists('BcpErrors.txt')" Text="One or more bcp commands contained errors." />
Есть ли способ заставить msbuild завершить сборку, если bcp не может загрузить какие-либо данные?