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

Jpi*_*pin 5 c# deployment tfs visual-studio sql-server-data-tools

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

:r .\Scripts\Script1.sql 
:r .\Scripts\Script2.sql 
:r .\Scripts\Script3.sql 
:r .\Scripts\Script4.sql
Run Code Online (Sandbox Code Playgroud)

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

Rud*_*udy 5

将此添加到您的项目文件中

 <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>
Run Code Online (Sandbox Code Playgroud)

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

:r .\DataScript.sql
Run Code Online (Sandbox Code Playgroud)

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


MrH*_*ood 0

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

如果您想要传统的脚本系统,那么您应该考虑 Ready Roll 或 SSW SQL Deploy。