【问题标题】:Versioning SQL Server DDL code版本控制 SQL Server DDL 代码
【发布时间】:2010-01-12 15:00:37
【问题描述】:

我希望在 CVS 下拥有所有 DB DDL 代码

我们正在为我们的 .NET 代码使用 Subversion,但所有数据库代码仍然没有版本化。

我们只知道数据库逻辑的重要性。我用谷歌搜索过,但我发现只有少数(昂贵的工具)。我相信还有其他(更便宜的)解决方案。

您建议采用什么方法?什么工具最合适?

SQL Server 2005、VS 2008 TS、TSVN

更新 我们的编码场景是开发人员无法直接访问 PROD DB。仅由脚本更改(因此这不是问题)

我最感兴趣的是所有开发人员都拥有完全访问权限的 DEV 环境。
因此,开发人员会覆盖之前由另一个人更改的 USP。
我希望能够恢复丢失的版本/比较 USP 修订等。

UPDATE-2
为了创建部署脚本,我们使用 Red-Gate SQL Compare。
完美运行 - 所以部署脚本不是一个案例。

【问题讨论】:

    标签: sql-server visual-studio-2008 version-control cvs ddl


    【解决方案1】:

    如果您还没有阅读,Martin Fowler 的文章Evolutionary Database Design 是一个很好的起点。

    这篇文章很难总结,但它描述了他的团队如何在快速变化的开发过程中处理数据库版本控制。他们创建了自己的工具来简化事情:将用户带到当前主服务器的脚本,复制架构的任何版本以便用户可以调试彼此的工作副本等。

    对于可靠的低技术解决方案,我发现在源代码管理中保留两种 DDL 脚本很有帮助:

    • 可以从头开始创建数据库对象的主版本。
    • 每次开发迭代的“版本升级”脚本。

    它们在一定程度上是多余的,但非常有用(尤其是在部署方面)。

    【讨论】:

      【解决方案2】:

      如果您还没有看过 Visual Studio 数据库版 GDR(又名“Data Dude”),您绝对应该下载并尝试一下:

      http://www.microsoft.com/downloads/details.aspx?FamilyID=bb3ad767-5f69-4db9-b1c9-8f55759846ed&displaylang=en

      除其他外,GDR 将通过让每个开发人员轻松维护自己的数据库本地副本、版本脚本、创建部署脚本以将数据库架构移动到新版本,甚至支持数据库来促进团队开发回滚。

      如果您使用的是团队系统开发者版,则它是免费的。看看吧。

      【讨论】:

        【解决方案3】:

        如果您使用 Visual Studio Team Suite 或 Visual Studio Developer Edition,您有权获得 Visual Studio Database Professional 的副本。这旨在完全按照您的描述进行,等等。我们用它来管理我们的数据库架构(代码)。

        兰迪

        【讨论】:

          【解决方案4】:

          我们也对所有数据库代码使用 Subversion。由于除非在脚本中,否则不允许任何内容进入 Prod,因此让人们将所有脚本都放入 subversion 似乎没有问题。我们倾向于编写更改表脚本来使用现有数据更改表,然后重新创建整个表结构,以防我们需要从头开始创建一个新数据库(我们经常在多个服务器上拥有相同的数据库结构,因为我们的一些客户端非常大并且不希望他们的数据意外地提供给竞争对手,因此为单独的服务器付费,因此可能需要在没有数据的情况下再次创建整个数据库。)对于不直接存储数据的对象,我们删除原始对象并重新创建它创建语句。每个项目在存储库中都有自己的主页,每个数据库也有,因此脚本可能位于多个位置以方便部署。

          但真正的关键是没有脚本没有人可以加载到 Prod。我们没有给我们的开发者直接的 prod 权限,所以他们在脚本中做事而不是使用 SSMS 没有问题。

          【讨论】:

            【解决方案5】:

            我写了SMOscript,它为数据库中的每个对象生成一个 CREATE 脚本。

            使用此工具生成 CVS 覆盖的目录,并更新您的存储库。

            【讨论】:

              【解决方案6】:

              最后我发现这个工具和方法非常有用并且很容易介绍
              (至少在一开始 - 没有版本控制解决方案的地方):

              http://www.codeproject.com/KB/database/SQLScripter.aspx

              您可以开箱即用。
              对于最终解决方案,我倾向于 GDR。

              【讨论】:

                【解决方案7】:

                【讨论】:

                • ScriptDB4Svn 需要不支持 2005 对象类型的 sql2000 的 scptxfr。 2005+ 年缺少 scptxfr 让我编写了自己的脚本工具。
                【解决方案8】:

                您应该使用 Management Studio (SSMS) 并将 .sql 置于源代码控制之下,可能是文件夹下的单独架构对象。 希望这会有所帮助

                【讨论】:

                • 我试过了。但在小团队中,这消耗了太多时间。所以我们决定自动化
                【解决方案9】:

                查看Wizardby 是否符合您的需求。

                【讨论】:

                  猜你喜欢
                  • 2010-11-18
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2012-03-24
                  • 2016-06-11
                  • 2015-06-29
                  相关资源
                  最近更新 更多