我有一个很老的应用程序与当前的数据库(在MSSQL上,但没关系)。我用完所有必需的静态数据编写了它。现在我想通过更新脚本引入数据库更改。所以每个函数,每个SP都将放在独立文件中,所有架构更新脚本都将存储在名为'SomeProduct01_0001'
的文件中,这意味着此脚本属于产品SomeProduct,sprint 1,它是第一个架构更新脚本
我知道每个脚本必须绝对可以重新运行,但无论如何我想要具有将这些脚本组合成基于数据库版本(存储在数据库表中)的脚本的功能。
bat
或exe
文件)或为每个文件添加一些SQL标头?从其他角度来看,我已经有了版本 - 它将包含sprint标识符和脚本标识符,不确定是否可以在脚本标题中复制此信息。EXEC('')
整个脚本中?除了sigle引号字符我还需要逃脱什么?UPD:正如David Tanzer所说,最好使用现成的数据库迁移解决方案,因此对于像我这样的案例来说,它可能是最佳解决方案。它不是并且完全回答我的问题,但它适用于新的解决方案。
答案 0 :(得分:1)
你不必自己实现这个,有工具可以做到这一点。看一下dbmaintain,它几乎提供了你所描述的功能:
http://www.dbmaintain.org/overview.html
我知道并与多个团队合作过,他们使用它来管理所有环境中的数据库模式:开发,测试,分段和生产。
http://flywaydb.org/似乎是另一种工具,它具有更多功能。他们甚至在他们的主页上比较了多个工具(包括dbmaintain)