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

7
我在一个SQL项目中有一个PostDeployment脚本,当发布时运行该项目中的一些其他脚本:
:r .\Scripts\Script1.sql 
:r .\Scripts\Script2.sql 
:r .\Scripts\Script3.sql 
:r .\Scripts\Script4.sql

是否可以在源代码控制(TFS)的Scripts文件夹中添加新脚本时,自动更新并执行Scripts文件夹中所有SQL脚本,而无需手动更新每个脚本?


我成功地将此功能应用到我的项目中,每次构建时自动包含指定文件夹中的所有 SQL 脚本,无需在后置脚本文件中手动添加,现在已经自动完成了。使用包含在 proj 文件中的 msbuild 命令! - SAS
3个回答

9
请将以下内容添加到您的项目文件中:
 <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

这可以用于动态生成脚本,并可在部署前/后脚本中引用。

0

如果您需要不断地操纵它,那么您很可能在错误地使用SSDT。 SSDT是基于模式的版本控制系统,而不是基于脚本的系统。

如果您想要传统的脚本系统,则应查看Ready Roll或SSW SQL Deploy。


-1

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


我写的一些关于在构建中使用xmlpoke的信息可以在这里找到:https://dev59.com/Mobca4cB1Zd3GeqPbNzl#27924631 - SAS

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接