我有一个使用 .net 2015 mvc 5 应用程序的 sql server 数据库。我的数据库代码是使用 SSDT 项目进行源代码控制的。我正在使用 SqlPackage.exe 使用由 SSDT 项目构建过程创建的 .Decpac 文件将数据库部署到暂存环境。这是使用 VSTS build 的 powershell 任务完成的。这样,我可以以源代码控制的方式更改数据库架构。现在的问题是关于数据库的主数据插入。
我使用一个 sql 脚本文件,该文件具有作为部署后脚本执行的数据插入脚本。该文件也是源代码控制的。
问题是,最初我们准备了插入脚本以针对第一个版本的 sprint(以 sprint n 作为基础)。但是在下一个冲刺中,如果更新一些主数据,那么应该如何更新主数据插入:
- 在脚本文件的最后添加新的更新/插入查询?但在这种情况下,部署后脚本将由 CI 执行,它会尝试在后续构建中一次又一次地插入数据,如果我们在该数据库的主表中进行了一些架构更改,最终将失败。
- 更新数据插入脚本中的现有插入查询。在这种情况下,我们也遇到了麻烦,因为在构建后事件中,整个数据将被重新插入。
- 为每个脚本维护单独的数据插入脚本,并将脚本引用更新到 SSDT 的构建后事件的新文件。这种方法需要手动操作并且容易出错,因为开发人员必须记住这个过程。这种方法的另一个问题是,如果我们需要在分布式服务器场中再设置 1 个数据库服务器。多个数据插入脚本会抛出错误,因为 SSDT 具有最新的架构,并且它将创建一个具有相同架构的数据库。但是较旧的数据脚本具有先前模式的数据插入(在以后的 sprint 中更改的 sprint wise db 模式)
因此,任何人都可以建议人工操作较少但可以涵盖上述所有情况的最佳方法。
谢谢鲁彭德拉