ssdt post部署脚本运行一次

Pri*_*cey 9 sql deployment sql-server-2008 visual-studio-2012 sql-server-data-tools

我是SQL Server数据库工具的新手,可能对后期部署脚本正在做什么做出错误的假设..如果我错了,请纠正我.

据我所知,预计部署后脚本将在每次部署后运行,而不仅仅是单个部署.

如果我想让部署后脚本运行一个脚本,只有一次有一种方法可以做到这一点,而不需要数据库中的版本或历史表,这些脚本已经运行这些脚本时记录?

即我可以将任何后续的脚本修改作为项目中的新文件添加到版本号中,并将其添加到后期部署脚本中,但是如何忽略先前的脚本(可能没有先删除它)?无论在部署期间是否仍然运行脚本?

是否有这种配置或这种意外行为?

Pet*_*ott 10

部署前和部署脚本旨在每次发布项目时运行.您的最佳做法是使它们可重复.添加检查,以便在数据已存在的情况下,不再运行或类似的操作.您可以构建某种基本的日志记录表来存储它 - 如果在表中找不到行,则运行脚本并将行放入表中.

如果存在多个脚本,则无法告诉项目仅运行最新版本的脚本,因为它们都内置在一个大型PreDeploy.sql或PostDeploy.sql文件中.你需要在每个部分/脚本中有一些东西可以告诉它在哪里知道是否要运行.这可能是现有的数据检查,表检查,版本检查或其他,但它需要知道在哪里使用什么来知道是否运行.

除了注释脚本或通过SQLCMD变量或其他检查以某种方式处理它们之外,没有办法解决这个问题.那些仍然需要你编写每个脚本应该运行的方式.如果您在Pre/Post Deploy脚本中提供了您要完成的示例或两个示例,我们可以提供更好的指导.

出于我们的目的,我们使脚本可以重复使用,并在它们运行时将其删除.它们仍处于源代码管理中,或者您可以在删除项目之前使用快照来存储该版本的项目.