sql-server – 管理数据库迁移:脚本与工具

前端之家收集整理的这篇文章主要介绍了sql-server – 管理数据库迁移:脚本与工具前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我们的项目有大约20个开发人员,但我们的应用程序相对较少使用数据库.我们有大约5个数据库的集合,所有这些数据库都非常小,每个数据库的表少于20个,其中没有数百个行或任何大的数据库.

我们在桌面上有两个选项可用于管理数据库随时间的演变:

>某种工具.目前,我们正在使用Visual Studio数据库项目,其中包含模式的当前定义,并查看参考数据库生成diff脚本.然后,我们使用此diff脚本使参考数据库保持最新.
>使用版本脚本从基线构建数据库.脚本手动放置在源代码管理中.将数据从旧列/表移动到新数据的任何数据迁移都将是这些脚本的一部分. DB中某个版本会记录一个版本,升级会在DB版本和当前版本之间运行所有脚本.

第二种选择似乎被广泛使用,我在这里找到了一个深入的讨论:http://odetocode.com/blogs/scott/archive/2008/01/31/versioning-databases-the-baseline.aspx

我们现在遇到的问题是我们无法访问我们的生产数据库.这意味着要创建一个发布包,我们必须将Production的备份恢复到另一个位置,针对该参考数据库生成差异并将脚本提供给生产数据库团队.因此,我们的生产发布与我们的其他环境不同.

这使得运行版本化脚本的想法很有吸引力,因为我们在所有环境中使用相同的脚本,并且在部署中没有临时工作(例如,将prod手动恢复到参考DB).但鉴于我们有这样一个小规模的数据库情况,我觉得我们很难成为数据库工具的困难案例.我们想要的是尽可能简单易懂的东西.

RedGate套件之类的工具是否适合这种情况,或者我们应该使用版本化的脚本吗?成本并不是一个问题,它更多的是创建一个成功的坑,维护和部署数据库是尽可能基本和自动化.

解决方法

根据我的经验,它总是比模式更改更多.如果将列拆分为两个,或将列移动到单独的表或其他类似的东西,则需要同时迁移模式和数据.

没有工具或脚本可以让您自动迁移实际数据.在最大程度上,您将获得架构的差异,您的开发人员可能会发现这些架构可用作数据库版本迁移脚本的提醒/检查列表(在单个事务中完成create / alter / drop和insert / update / delete序列) .

猜你在找的MsSQL相关文章