SSDT后部署脚本 - 在文件夹中运行所有脚本

时间:2015-02-17 12:45:07

标签: c# visual-studio deployment tfs sql-server-data-tools

我在SQL项目中有一个PostDeployment脚本,该项目在发布时在项目中运行许多其他脚本:

:r .\Scripts\Script1.sql 
:r .\Scripts\Script2.sql 
:r .\Scripts\Script3.sql 
:r .\Scripts\Script4.sql

每次在源代码管理(TFS)中的Scripts文件夹中添加新脚本时,都可以只迭代并执行Scripts文件夹中的所有SQL脚本,而不必手动更新它?

3 个答案:

答案 0 :(得分:1)

将其添加到项目文件

 <ItemGroup>
    <DataScripts Include="Data\*.sql" />
 </ItemGroup>
 <Target AfterTargets="BeforeBuild" Name="CreateDataScript">
    <Delete Files="DataScript.sql" />
    <WriteLinesToFile Overwrite="false" File="DataScript.sql" Lines=":r .\%(DataScripts.Identity)" />
 </Target>

DataScripts属性是包含要运行的所有sql脚本的文件夹。这会在您进行构建之前生成文件,因此您可以在部署后脚本中引用它,而不会出现这样的问题。

:r .\DataScript.sql

这可用于动态生成可在部署前/后脚本中引用的脚本

答案 1 :(得分:0)

它不是真正的执行,而是包含脚本文件。因此,您必须编辑该文件以添加所有文件的行。这可以使用xmlpoke命令完成。您必须编辑Project文件并添加循环文件夹中所有文件的代码,并为每个文件添加一个include语句。

答案 2 :(得分:0)

如果您需要继续操作,那么您可能使用SSDT错误。 SSDT是基于模式的版本控制系统,而不是基于脚本的系统。

如果您需要传统的脚本系统,那么您应该查看Ready Roll或SSW SQL Deploy。