2

您如何管理 Visual Studio 项目的 sql server 数据库构建/部署/迁移?

我们的产品包含一个合理的数据库部分(~100 个表,~500 个过程/函数/视图),因此我们需要能够部署当前版本的新数据库以及将旧数据库升级到当前版本。目前,我们为创建新数据库和版本之间的迁移维护单独的脚本。显然不理想,但其他人如何处理这个问题?

这对我们来说很复杂,因为有许多客户都有自己的数据库实例,而不是说在我们自己的 Web 服务器上只拥有开发/测试/实时实例,但是围绕为其他人管理开发/测试/实时的过程必须相似。

更新:我不想使用像 RedGate 这样的任何专有产品(尽管我一直听说它们非常好,并且会考虑将其作为解决方案)。

4

3 回答 3

2

我们使用Red-Gate SQLCompare 和 SQLDataCompare 来处理这个问题。这个想法很简单。这两种比较产品都允许您将选定表(例如配置表)中的模式或数据的完整图像作为脚本维护。然后,您可以将任何数据库与脚本进行比较并获取更改脚本。我们将脚本保存在 Mercurial 源代码控制中,并在每个版本中添加标签(标签)。然后,支持人员可以获取任何版本的脚本,并使用 Redgate 工具从头开始创建或升级。

Redgate 还有一个 API 产品,允许您从代码中执行比较功能。例如,这将允许您在安装程序或产品本身中具有自动升级功能。我们经常将它用于我们托管的 Web 应用程序,因为它使我们能够更全面地自动化推出过程。在我们的例子中,我们有一个 MSBuild 任务,支持人员可以执行该任务来自动推出和升级。如果您分发给第三方,您必须为每个包含 API 的分发支付少量的额外许可费用。

Redgate 还有一个工具可以自动打包数据库安装或升级。我们不使用那个,因为我们发现与版本的脚本进行比较为我们提供了更大的灵活性。

Redgate 工具还可以帮助我们进行开发,因为它们使以非常精细的方式对模式和配置数据进行源代码控制变得微不足道(每个数据库对象都可以放在自己的文件中)

于 2010-04-20T14:06:56.797 回答
1

在 SSDT 项目出现之前就提出了这个问题,但这绝对是我现在要采用的方式,以及用于结构数据库更改的手工迁移脚本,其中有数据会受到影响。

于 2013-01-02T15:06:13.847 回答
0

还有 MS VSTS 方法(这里有 2008 年的描述),有人有一篇关于 2010 年的好文章以及使用这些工具的优缺点吗?

于 2010-04-20T23:45:05.430 回答