作为DevOps工程师,我希望我们的开发人员能够将SQL脚本放置在SQL Server Database Project文件夹中,并让VSTS构建代理准备自上一次成功构建以来提交的所有脚本。
自上次成功构建以来,我只查找文件的原因是因为我只希望这些脚本运行一次。如果将它们内置在部署后脚本中,则将在每次部署数据库时运行它们。这些脚本大多数是数据更改,而不是架构更改。
我找到了这个Build last commited [sic] SQL Script VSTS,但是该解决方案应用于Git存储库以获取最新的提交更改,而不是通用解决方案或与TFVC等效的解决方案。
我需要研究Visual Studio的预构建事件吗? SQL Server数据库项目部署后脚本? VSTS建立代理任务以搜索最新文件并将其复制到另一个位置?
答案 0 :(得分:1)
如果将它们内置在部署后脚本中,则将在每次部署数据库时运行它们。
解决此问题的方法是制作脚本idempotent。如果需要插入数据,请在之前检查数据是否存在。
答案 1 :(得分:0)
听起来像您真正想要的是DBUP,它跟踪已运行的脚本并通过控制台应用程序运行它们。
https://dbup.readthedocs.io/en/latest/
https://marketplace.visualstudio.com/items?itemName=johanclasson.UpdateDatabaseWithDbUp