我在SQL项目中有一个PostDeployment脚本,该项目在发布时在项目中运行许多其他脚本:
:r .\Scripts\Script1.sql
:r .\Scripts\Script2.sql
:r .\Scripts\Script3.sql
:r .\Scripts\Script4.sql
每次在源代码管理(TFS)中的Scripts文件夹中添加新脚本时,都可以只迭代并执行Scripts文件夹中的所有SQL脚本,而不必手动更新它?
答案 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。