65.9K
CodeProject 正在变化。 阅读更多。
Home

使用 Redgate 的 SQL Source Control 将数据库置于版本控制之下

emptyStarIconemptyStarIconemptyStarIconemptyStarIconemptyStarIcon

0/5 (0投票)

2015年8月10日

CPOL

5分钟阅读

viewsIcon

31492

MVP 和 DBA Alessandro Alpi 讨论了数据库源代码控制的优势,并展示了为什么 SQL Source Control 是 SQL Server Management Studio 用户的最佳工具。

引言

你为什么不把数据库当作代码对待?这是我经常问的一个问题,因为如果你将动态数据与数据库结构分离,你就会剩下代码和静态数据。因此,对数据库进行版本控制不仅是可能的,而且还提供了明显的优势。

变更可撤销 – 当变更提交到版本控制时,系统会维护这些变更的历史记录。因此,如果发现 bug 或需要撤销变更,只需轻点一下按钮,即可恢复到早期版本。

变更可追踪 – 有时你想知道是谁在何时何地以及最关键的是为什么进行了某项变更。版本控制会保留每一项变更的完整记录,让你了解每一个细节。

变更可共享 – 版本控制通过让团队能够共享文件并及时了解最新发展来鼓励团队合作。这样,开发人员始终在处理最新版本 – 数据库变更可以直接与应用程序变更相关联。

变更可分支 – 版本控制允许开发人员在自己的专用数据库上工作,而不是在共享数据库上工作,这样就可以追求不同的开发分支。然后,一个好的版本控制系统可以管理冲突并稍后合并不同的版本。

变更可测试 – 在版本控制到位的情况下,你可以直接从版本控制部署特定的修订版,这意味着你将部署与生产环境中将要部署的完全相同的东西到测试环境中,从而减少错误。为了进一步实现这一点,可以在开发过程的早期引入自动化测试,以便更早地发现 bug 并减少开发时间。

变更可部署 – 继测试之后,你可以安全地从版本控制进行部署,因为你所做的变更对生产环境是安全的。

不要改变你的工作方式 – 增强你的工作方式

可以看出,版本控制带来了巨大的优势。然而,这并不意味着必须以强迫你以不同的方式工作为代价。如果你选择正确的版本控制方法,你可以直接插入到你已有的系统中。

使用 Redgate 的 SQL Source Control。因为它是一个 SQL Server Management Studio 的插件,可以将你的版本控制系统链接到你的数据库,开发人员和 DBA 可以继续以他们熟悉的方式工作。

附加优势在于它支持所有最流行的版本控制系统,如 Team Foundation Server、Subversion、Git 和 Mercurial。当对数据库进行更改时,它会将表示每个对象新状态的文件脚本化并将其提交到版本控制系统。

你也可以选择共享或专用开发模型。在前一种情况下,整个团队在一个开发服务器上工作,在第二种情况下,每个开发人员都有自己的数据库副本,直接从版本控制下载。

在 SSMS 内部,SQL Source Control 向界面添加了许多即时可用的功能

  • 视觉元素可以让你一目了然地看到哪些内容已纳入版本控制,哪些未纳入,以及每个对象的状态。
  • 提交更改选项卡显示了哪些更改已准备好提交,突出显示了差异(直到 SQL 的单个行),并允许你轻点一下按钮即可将其提交到版本控制。
  • 获取最新选项卡让每个开发数据库的开发人员都能即时访问数据库的最新版本,避免传递手写的更改脚本。当然,只需单击一下即可将最新更改拉取到你的数据库中。

该工具对我来说的一个强大之处在于它在管理静态数据方面提供的简单性。查找表,如美国各州的列表,经常用作外键的参考,并可以保存在版本控制中。在对象资源管理器中,右键单击要进行版本控制的数据的数据库或表,然后选择其他 SQL Source Control 任务 > 链接或取消链接静态数据。将打开一个对话框,并选中链接/取消链接静态数据选项卡。

选择要链接的表,在你做出选择后,就可以将数据提交到版本控制。你还可以使用编辑筛选规则选项卡来指定单个对象或所有对象类型的排除或包含条件。

版本控制只是开始

一旦你的数据库纳入版本控制,Redgate 就提供了一种将更改部署到生产环境的便捷方法,直接从你的存储库进行部署。更好的是,它可以在没有任何错误、停机风险以及你可能熟悉的不必要问题的情况下做到这一点。

Redgate 最著名的工具 SQL Compare 在这里可以提供帮助。它可以检测你的开发更改,以及指定如何部署它们的任何脚本。然后它会为你编写部署脚本,你可以从 SQL Compare 进行部署,或者复制脚本以后进行审查和运行。它还会为你生成回滚脚本。

我特别喜欢 SQL Source Control 的一点是,如果你在部署流程方面稍微先进一些,它就能为持续集成和自动化部署打开大门。Redgate 的 SQL CI 插件是 DLM Automation Suite 的一部分,这是一套来自 Redgate 的工具,可以让你将持续集成和发布管理流程应用于 SQL Server 数据库。

我使用它,以便在更改被签入 SQL Source Control 时,SQL CI 会为数据库运行一个包含四个步骤的 CI 流程 – Build(构建)、Test(测试)、Sync(同步)、Publish(发布)。最后,我有一个经过测试的 NuGet 包,可以在发布管理工具中使用。我个人更喜欢 Octopus Deploy,最终结果是,我可以像处理应用程序一样,以敏捷的方式处理数据库。

摘要

当我开始使用 SQL Compare 来部署数据库时,我接触到了 Redgate。几年后 SQL Source Control 问世,它让我的工作——以及我同事的工作——变得容易多了。

无论你是独自工作还是团队合作,将你的数据库与应用程序一起进行版本控制都应该被视为开发过程的基本组成部分。特别是当像 SQL Source Control 和 SQL Compare 这样的工具存在的时候。

通过下载 SQL Source Control 的免费试用版迈出第一步。

© . All rights reserved.