2016-05-19 15 views
1

データベースに対して実行されたときにupdate skriptsがエラーをスローしないかどうかを確認する統合チェックビルドを作成する必要があります(Microsoft SQL Server 2008 R2)
特定のフォルダからすべてのSQLファイルをテストデータベースに実行するには?
これを行う方法はありますか?TFS 2015 vNext buildフォルダからSQLスクリプトを実行aganst databese

私たちの古いTFS 2010では、誰かが既にこのためのライブラリを作成しており、このようにMSbuildで設定しています。

<Project DefaultTargets="DesktopBuild" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5"> 
    <UsingTask TaskName="PP.Builder.VersionUpdateTask" AssemblyFile="PP.Builder.dll"/> 
    <UsingTask TaskName="PP.DbUpdater.Library.DbBuildTask" AssemblyFile="PP.DbUpdater.Library.dll"/> 
    ..... 
    ..... 
    <Target Name="AfterGet"> 
    <Exec Command="$(TF) get /noprompt /all $(AssemblyInfoFile)"/> 
    </Target> 

    <Target Name="AfterCompile"> 
    <DbBuildTask DbServer="TestServer\sql2008r2" DbBackupPath="c:\beckUp backups" DbName="empty" ScriptsPath="$(SolutionRoot)\Proj\dev\PP.Veyron.Db" UpdateVersionNumber="false" UpdateVersionNumberYesterday="false" TestOnly="true" SkipDbBackup="false"/> 
    </Target> 
</Project> 

これをTFS2015に転送する方法を考えてください。vNext build system?

答えて

3

Powershellスクリプトを使用してSQLスクリプトを実行できます。だから、あなたはあなたのビルドテンプレートでPowerShellスクリプトステップを追加することができ、スクリプトは次のようになります。

#Provide SQLServerName 
$SQLServer ="MySQLSErver\InstanceName" 
#Provide Database Name 
$DatabaseName ="Test" 
#Scripts Folder Path 
$FolderPath ="C:\MyScripts\Test\" 

#Loop through the .sql files and run them 
foreach ($filename in get-childitem -path $FolderPath -filter "*.sql") 
{ 
invoke-sqlcmd –ServerInstance $SQLServer -Database $DatabaseName -InputFile $filename.fullname 
#Print file name which is executed 
$filename 
} 

は、ブログを参照してください:http://www.techbrothersit.com/2015/08/how-to-execute-sql-files-from-directory.html

関連する問題