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



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

:r .ScriptsScript1.sql 
:r .ScriptsScript2.sql 
:r .ScriptsScript3.sql 
:r .ScriptsScript4.sql

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

将其添加到项目文件中

 <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

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

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

如果你想要一个传统的脚本系统,那么你应该看看Ready Roll或SSW SQL Deploy。

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

最新更新