处理数据库升级的最佳方式是什么?
目前,我们运行一个升级脚本,执行如下操作:如果列不存在,则添加列。
有没有更好的方法?这个脚本是个巨人吗?
此问题与Microsoft和SQL server 2005/2008有关。
发布于 2011-03-21 23:17:40
如果将其部署到许多不同的位置,那么您所拥有的就是如何去做。或者你可以使用像Red Gate的SQL Packager
如果这是一个关于如何部署到少数几个位置的问题,例如,从试运行迁移到生产,则使用Red Gate's SQL Compare和/或SQL Data Compare产品。
仅供参考-我不在红门工作;我只是真的很喜欢他们的东西。
我尝试过使用Microsoft的工具进行模式和数据比较。数据工具工作得很好;模式工具是过度设计的,很难正常工作。坦率地说,我已经看到微软的模式工具搞砸了足够多的更新,以至于我再也不相信它了。
微软工具的众多缺点之一是,默认情况下,它希望更新文件在服务器上的物理位置等内容。当您在同一台服务器上有多个数据库副本时,这会带来问题。我不认为他们把这个工具的开发想得很好。UI也很难使用。
发布于 2011-03-21 23:19:38
您可能还想尝试一下RedGate's SQL Compare。此工具将比较两个模式,并生成脚本以更新并使其相同。
发布于 2011-03-21 23:21:13
使用升级/降级脚本是一种很好的方法。NYSystemsAnalyst正在谈论的特性听起来很有趣。但是,您可能需要一些特定的操作来转换现有数据。
例如,如果重构表结构将列拆分到多个表,则需要一些代码来从现有表中生成新表的数据。
Ruby on Rails通过使用"migrations“内置了这样一种机制。您必须提供两个方向的更改脚本,升级和降级。然后,工具会自动检查您当前的数据库模式版本,并执行必要的更改脚本。我认为类似的系统应该适用于.NET或您正在使用的环境。
https://stackoverflow.com/questions/5379588
复制相似问题