我们有一个ASP.NET Web应用程序,需要维护数据库创建和初始化脚本。
是否存在人们知道的用于维护数据库创建和初始化脚本的行业最佳实践。我可以想到两种主要方法。
此外,应该能够通过源代码控制来跟踪脚本,即表顺序应该是可控的。
如果可能,还应包括以相同或单独的脚本跟踪初始化数据的功能。
目前我们从管理工作室生成脚本,但表的顺序似乎是随机的。
解决方案越自动化越好。
答案 0 :(得分:3)
问题不是维护脚本,也不维护数据库的“主”副本。真正的问题是升级现有数据库。您在开发人员环境中进行修改,然后将其传播到测试环境,最后将其推送到生产环境中。虽然在开发人员和测试环境阶段可以从头开始,但在生产中,您始终必须升级现有部署。
根据我的经验,最佳做法是使用upgrade scripts。即使对于单个部署的站点,这种做法也很有用,但是对于可能位于不同版本的多个位置,这种做法变得非常宝贵。但即使只有一个操作站点仍然可以重复测试升级(从当前版本的备份开始),保持源代码控制中的更改,具有良好的形式化和同行评审的更改过程(升级脚本)。升级脚本可以根据操作站点的特定需求进行定制,例如特别小心处理大型表,或处理加密数据,或者基于差异的工具忽略或忽略的任何细节。主要的缺点是必须编写脚本,这需要真正的T-SQL知识(忘记你最喜欢的管理工具中的所有'设计师')。
答案 1 :(得分:2)
您可能需要查看RedGate SQL Source Control。
答案 2 :(得分:1)
您在寻找Visual Studio Database Projects吗?
我使用数据库项目来存储所有数据库对象(表,视图,函数,键,触发器,跨模式的索引)并在TFS中保持版本控制。您可以构建数据库以确保一切有效。您可以部署到新数据库,或与现有数据库进行模式比较。
我还将所有参考和设置数据保存在部署后自动运行的部署后脚本中。