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