在开发过程中保持 SQL Server 数据库项目和实际数据库(在 SSMS 中)同步

Posted

技术标签:

【中文标题】在开发过程中保持 SQL Server 数据库项目和实际数据库(在 SSMS 中)同步【英文标题】:Keeping a SQL Server Database Project and the Actual Database (in SSMS) in sync during development 【发布时间】:2016-03-25 12:41:55 【问题描述】:

我试图弄清楚 SQL Server 数据库项目与 SQL Server (SSMS) 中的实际数据库同步后的正常工作流程。我使用其中一个项目的主要原因是将所有内容保存在源代码管理中。

以下是我设置的步骤:

    在 SQL Server Management Studio 中创建实际数据库和整个架构。 在 VS2015 中新建一个 SQL Server 数据库项目。 右键单击项目并导入实际数据库。

既然项目与实际数据库同步,我应该如何进行更改?我是在数据库项目中制作它们然后重新发布它还是在模式中制作它们?基本上我要说的是,我试图避免在两个地方的开发过程中进行架构更改。

【问题讨论】:

【参考方案1】:

通常,最佳做法是对项目进行更改,将其签入源代码管理,然后根据需要将更改发布到您的数据库。然后,您的项目将成为您的来源。您可以对其进行分支、合并以及执行开发所需的任何其他操作。不过,您不会重新发布您的数据库。发布项目时,您将更新现有的。它将在您的项目和数据库之间进行比较,然后进行适当的更新/更改以使您的数据库与项目保持一致。

我在这里写了一篇关于我使用 SSDT 的经验的博客:http://schottsql.blogspot.com/search/label/SSDT,但如果你看的话,还有其他一些很棒的资源可用。肯定有不同的做事方式,我选择的可能不完全适合你的环境。

【讨论】:

有趣的是,在我们对 Redgate 的数据库项目用户进行的一项调查中,我们了解到大多数用户首先更改他们的开发数据库,​​而不是让他们离线。我怀疑这是因为等待 F5 构建有开销。 好吧,我将首先对数据库进行更改,但是 SQL 源代码控制给我的原因之一是我觉得我需要使我的数据库与当前的数据库保持一致先分支然后进行更改。我将在本地进行更改(智能感知有帮助),但不久之后将脚本复制到 SSDT 中。对于表格,我通常会先使用 ER Studio,就模型达成一致,然后添加到源代码管理。然而,对共享环境的推动都来自那个 SSDT 项目。其余的只是草稿。 你试过 ReadyRoll 了吗?这支持 Visual Studio 中的连接开发,从而避免“复制脚本”步骤的开销。 我还没有尝试过。不过,我并不担心连接的开发部分。很多时候,当我在玩本地实例时,我会在最终确定之前制定一些想法。尤其是对于存储的过程/视图,在我倾向于签入之前,我会经历许多迭代,因为我正在研究不同的行为、性能等。不过,我会看看这个项目,看看它做了什么。 :) 没错。 ReadyRoll 通过区别对待“可编程对象”来识别这一点。我想你会喜欢的。 doc.ready-roll.com/display/RRSQLDOC/Programmable+Objects

以上是关于在开发过程中保持 SQL Server 数据库项目和实际数据库(在 SSMS 中)同步的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server 数据库项目 - 创建更改脚本

转换 SQL Server DATETIME 时出错...如何保持日期不变?

记一次从Sql Server中图片二进制流还原回图片的开发过程

如何更新我的 SQL Server 数据库架构?

数据库大师成长日记:SQL Server如何防止开发人员获取敏感数据

如何创建一个与生产保持同步的 sql server 登台/测试环境?