【问题标题】:Is it possible to use MS VS Database Project as a complete solution for database versioning?是否可以使用 MS VS 数据库项目作为数据库版本控制的完整解决方案?
【发布时间】:2011-05-07 11:23:32
【问题描述】:

在我们的项目中,我们有多个生产数据库和许多开发人员。每个生产数据库代表一些“子项目/本地化版本”。我们使用 SQL Server 2008。

所以,我需要使用 MS Visual Studio 数据库项目开发数据库版本控制策略。 我已经阅读了很多关于数据库版本控制和数据库项目的文章,但我仍然有很多问题:

  1. 开发人员应如何实现 他们对 db 项目的更改? (最佳实践)

  2. 如何生成 100% 可行的 “最新版本”部署脚本 无需人工干预(跳过 一些对象,重写一些变化, 等)?

  3. 如何使用 MS 管理数据更改 Visual Studio 数据库项目?一世 了解部署前/部署后脚本, 但我认为它无法解决这个问题 问题。 (例如:我需要重新映射 一些表到另一个)。

“理想的解决方案”是:

  1. 开发人员为数据库 [ProductionDB] 生成和维护数据库项目。

  2. 在新版本中,我将数据库项目部署到 [ProductionDB] 变化。

  3. 开发人员更改数据库项目并为具体更改编写一些数据操作脚本。

  4. 在新版本中,我将数据库项目部署到 [ProductionDB] 并进行了所有必要的更改。

那么,最后一个问题:是否可以将数据库项目用于上述目的或有人使用类似的场景/解决方案?

PS:我已经阅读了以下讨论:

  1. Database changes versioning [closed]
  2. How do I version my MS SQL database in SVN?
  3. Looking for solution for database versioning
  4. Is there a version control system for database structure changes?

【问题讨论】:

    标签: sql-server visual-studio sql-server-2008 version-control database-versioning


    【解决方案1】:

    正是出于您在此处提到的大多数原因而使用了数据库项目-

    1. 开发人员只需签出数据库脚本文件,进行更改,然后重新签入。请注意,他们将更改 .sql 文件,而不是直接更改任何开发数据库中存在的对象。因此,如果您需要向数据库表中添加两列,您将修改该表的创建表脚本,而不是为该表编写更改脚本。

    2. 1234563有一个项目设置允许您选择在“部署”时是否也应针对数据库运行部署脚本。
    3. 部署脚本可以是一个交付物,针对产品副本单独测试,然后作为补丁应用到产品。

    关于数据操作脚本我不太确定,但是对于您提到的所有其他目的,数据库项目是完美的。

    【讨论】:

    • 我个人更喜欢直接在开发数据库中进行更改,测试它们,完成后,进行数据库比较以将更改导入源代码管理
    【解决方案2】:

    您所描述的是数据库项目存在的原因。

    回答您的问题:

    1. 这取决于开发人员。您可以在 Visual Studio 中工作并直接编辑项目文件,或者在 Mgmt Studio 中编辑数据库的实时副本并在 VS 中使用模式比较将更改同步回项目。我已经使用它几个月了,发现两者都可以正常工作,尽管我倾向于更频繁地直接编辑项目文件。

    2. 如果您选中复选框以首先删除目标数据库,则部署项目会生成最新版本。您可以在构建过程中调用 VSDBCMD,无需人工干预

    3. 部署前/部署后脚本仅适用于您提到的内容。一个例子是从一个表中选择所有数据到一个临时表中,并在预部署期间截断它,让项目处理模式迁移,然后在部署后将其添加回来。这可能会变得很棘手,但这个问题从来都不容易解决。

    希望这会有所帮助。

    【讨论】:

      【解决方案3】:

      数据问题很难解决。在 Red Gate,我们收到了很多关于 SQL Source Control 工具的请求,该工具与 VS 数据库项目有相似之处。好消息是我们正在积极增加对此的支持,并且应该在圣诞节前进行早期构建。如果您有兴趣,只需在http://www.surveymk.com/s/SqlSourceControl_EapSignup 注册抢先体验通知。我们很乐意收到您的反馈。

      【讨论】:

        【解决方案4】:

        您可能想看看开源bsn ModuleStore toolkit,它试图实现这个工作流程(实际上它还做了更多的事情)。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-05-22
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多