我们一直在寻找 SQL 源代码控制的可能解决方案。我刚刚遇到 Red Gates SQL 源代码控制,想知道是否有人实现了它?我打算下载试用版并尝试一下,但只是想看看其他人是否有真实的体验。
一如既往地非常感谢您的投入
--S
我更新了下面的原始帖子,以反映最新版本的 SQL Source Control (3.0) 和 SQL Compare (10.1) 中的更改。
由于这个问题是一年多前提出的,我的回答可能对您没有多大帮助,但对于目前可能正在评估 SSC 的其他人,我想我会投入我的两分钱。我们刚刚开始使用 SQL 源代码管理 (SSC),总体来说到目前为止我对它相当满意。但它确实有一些怪癖,特别是如果您在共享数据库环境中工作(而不是每个开发人员在本地工作),特别是在遗留环境中工作,其中同一数据库中的对象在开发团队之间随意划分。
为了简要概述我们如何在组织中使用该产品,我们在共享环境中工作,在该环境中我们都对同一个开发数据库进行更改,因此我们将共享数据库附加到源代码控制存储库。每个开发人员负责通过 SQL Server Management Studio (SSMS) 对数据库中的对象进行更改,完成后,他们可以将更改提交到源代码管理。当我们准备好部署到登台时,构建主机(me)将数据库代码的开发分支合并到主(登台)分支,然后使用数据库的主分支存储库版本作为源和实时运行 SQL Compare临时数据库作为目标,SQL Compare 生成必要的脚本来部署对临时环境所做的更改。暂存到生产部署的工作方式类似。另一个需要注意的重要点是,考虑到我们与其他开发团队共享同一个数据库,我们使用 SSC 的内置功能,该功能允许您按名称、类型等在数据库对象上创建过滤器。我们手动对我们特定团队的对象设置过滤器,排除所有其他对象,以便我们在进行部署时不会意外提交其他开发团队的更改。
因此,总的来说,这是一个设置和使用相当简单的产品,而且它非常好,因为您总是在 SSMS 中使用活动对象,而不是存储在单独的源存储库中的断开连接的脚本文件,后者存在不同步的风险。这也很好,因为 SQL Compare 会为您生成部署脚本,因此您不必像自己创建脚本那样担心引入错误。由于 SQL Compare 是一个非常成熟和稳定的产品,您可以非常有信心它将为您创建正确的脚本。
然而,话虽如此,以下是我迄今为止遇到的一些怪癖:
- SSC 在与数据库服务器通信方面非常活跃,以便跟踪与源代码控制存储库不同步的数据库项目。它每隔几毫秒进行一次轮询,如果您添加多个开发人员都使用 SSC 对同一个数据库进行工作,您可以想象我们的 dba 不太高兴。幸运的是,您可以轻松地将轮询频率降低到更可接受的程度,尽管代价是牺牲对象更改时的响应式视觉通知。
- 使用对象过滤功能,您无法通过查看 SSMS 中的对象轻松判断过滤器中包含哪些对象。因此,您不确定对象是否处于源代码管理之下,这与 Visual Studio 不同,在 Visual Studio 中,图标用于指示源代码控制对象。
- 对象过滤 GUI 非常笨重。由于我们在遗留数据库环境中工作,目前我们团队拥有的对象和其他团队拥有的对象之间没有明确的分离,因此为了防止我们意外提交/部署其他团队的更改,我们建立了一个过滤方案来明确包含我们拥有的每个特定对象。正如你可以想象的那样,这变得相当麻烦,并且由于编辑过滤器的 GUI 设置为一次输入一个对象,它可能会变得非常痛苦,尤其是第一次尝试设置你的环境(我最终编写一个应用程序来执行此操作)。展望未来,我们正在为我们的应用程序创建一个新的模式,以更好地促进对象过滤(无论如何也是一个更好的实践)。
- 使用共享数据库模型,开发人员可以将任何挂起的更改提交到源代码控制数据库,即使这些更改不是他们的。如果您尝试签入一堆更改,SSC 确实会向您发出警告,这些更改可能不是您的,但除此之外,您只能靠自己了。事实上,我发现这是 SSC 最危险的“怪癖”之一。
- SQL Compare 目前无法共享 SSC 创建的对象过滤器,因此您必须在 SQL Compare 中手动创建匹配的过滤器,因此存在这些不同步的危险。我最终将底层 SSC 过滤器文件中的过滤器剪切并粘贴到 SQL Compare 项目过滤器中,以避免处理笨重的对象过滤 GUI。我相信下一版本的 SQL Compare 将允许它与 SSC 共享过滤器,所以至少这个问题只是一个短期问题。(注意:此问题已在最新版本的 SQL Compare 中得到解决。SQL Compare 现在可以使用 SSC 创建的对象过滤器。)
- 直接启动时,SQL Compare 也无法与 SSC 数据库存储库进行比较。它必须从 SSMS 内启动。我相信 SQL Compare 的下一版本将提供此功能,因此这又是另一个短期问题。(注意:此问题已在最新版本的 SQL Compare 中得到解决。)
- 有时,SQL Compare 无法创建正确的脚本来将目标数据库从一种状态转换为另一种状态,通常是在您更新不为空的现有表的架构的情况下,因此您当前必须编写手动脚本并自行管理流程。幸运的是,这个问题将在 SSC 的下一个版本中通过“迁移脚本”得到解决,从该产品的早期发布版本来看,这个新功能的实现似乎是经过深思熟虑和设计的。(注意:迁移脚本功能已经正式发布。但是,它目前不支持分支。如果你想使用迁移脚本,你需要与你原来的开发代码分支运行sql比较...你签入的分支您的更改...这非常笨重,并迫使我以不太理想的方式修改我的构建过程,以解决此限制。希望这将在未来的版本中得到解决。)
总的来说,我对这款产品以及Redgate对用户反馈的响应能力以及产品的发展方向非常满意。该产品非常易于使用且设计精良,我觉得在下一两个版本中该产品可能会为我们提供大部分(如果不是全部)我们需要的东西。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)