任何使用 Red Gate 的 SQL 源代码控制的人

2024-02-06

我们一直在寻找 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(使用前将#替换为@)

任何使用 Red Gate 的 SQL 源代码控制的人 的相关文章

  • 如何在jOOQ中使用别名

    有人可以指导我如何在 jOOQ 中使用别名吗 我尝试查看 jOOQ 文档 但不清楚 如果可能 请提供示例 Both org jooq Table http www jooq org javadoc latest org jooq Table
  • 将数据从 MS SQL 导入 MySQL

    我想从 MS SQL Server 导入数据 通过某种正则表达式运行它以过滤掉内容 然后将其导入 MySQL 然后 对于每个查询 我希望显示来自第三个数据库的相关图像 明智地导入和链接 最简单的方法是什么 谢谢 澄清 它是一个 PHP 应用
  • SQL where 连接集必须包含所有值,但可以包含更多值

    我有三张桌子offers sports和连接表offers sports class Offer lt ActiveRecord Base has and belongs to many sports end class Sport lt
  • 在 BEFORE INSERT 触发器中使用 IF EXISTS (SELECT ...) (Oracle)

    我的代码不起作用 Oracle 告诉我创建触发器时出现构建错误 显然我无法获得有关构建错误的更准确信息 我以前确实没有做过很多SQL 所以我对语法不太熟悉 我有一种预感 Oracle 不喜欢我的 IF EXISTS SELECT THEN
  • 获取下一个ID而不插入行

    在 SQL SQL Server 中是否可以在插入行之前从表中的标识列检索下一个 ID 整数 而无需实际插入行 如果删除了最近的行 则这不一定是最高 ID 加 1 我问这个问题是因为我们偶尔需要用新行更新实时数据库 行的 ID 在我们的代码
  • PDO::PARAM_FLOAT 不存在,为什么?

    我想知道为什么 PDO PARAM FLOAT 不存在以及什么可以替代它 没有 可能是由于隐含的舍入问题 只需使用PDO PARAM STR并使用将浮点数转换为字符串strval float or string float
  • ORDER BY id 或 date_created 显示最新结果?

    我有一个表 实际上有几个 我想首先从中获取最新条目的结果 这是我的ORDER BY条款选项 date created INT 从不改变值 id 当然是INT AUTO INCRMENT 两列应同等地代表记录插入的顺序 我自然会使用date
  • Django 模型 - 外键作为主键

    我有以下2张表 在 models py 中 class Foo models Model uuid models CharField UUID primary key True default uuid4 and class FooExt
  • 子查询与连接

    我重构了从另一家公司继承的应用程序的一个缓慢部分 以使用内部联接而不是子查询 例如 WHERE id IN SELECT id FROM 重构后的查询运行速度提高了约 100 倍 50 秒到 0 3 我预计会有改进 但谁能解释为什么它如此剧
  • 如何使组合键唯一?

    I am making a database of students in one school Here is what I have so far 如果您不喜欢阅读 请跳至 简而言之 部分 问题是我对这个设计并不满意 我想要的组合gra
  • 扁平化/反规范化 SQL 查找表的最佳方法?

    我有很多这样的表 Lookup HealthCheckupRisks ID Name 1 Anemia 2 Anorexic 3 Bulemic 4 Depression 122 Syphilis PatientRisksOnCheckup
  • MYSQL 查询 WHERE IN 与 OR

    我开发了一个使用 OR 查询的系统 SELECT FROM tableA JOIN tableB ON idA idB WHERE idA 1 OR idA 2 OR idA 3 OR idA 4 OR idA 5 OR idA 100 与
  • 仅当所有记录都匹配时 SQL 连接

    我有3张桌子 CP carthead idOrder CP cartrows idOrder idCartRow CP shipping idCartRow idShipping dateShipped 每个 idOrder 可以有多个 i
  • 尝试通过比较不同的表从 SQL 查询输出正确的值

    我对 SQL 非常陌生 需要有关如何使用正确的查询完成此任务的帮助 我有 2 张桌子需要使用 表 TB1 有 id Name 1 bob 2 blow 3 joe 表 TB2 有 compid property 1 bob 2 blow 我
  • Crystal Reports 相当于“WHERE”

    我熟悉 SQL 但不熟悉 Crystal Reports 我正在尝试处理包含 5 列的导入数据集 id deathDate giftDate giftAmount Dead 123 2008 01 06 2011 09 08 25 00 T
  • 多个连接到同一个表

    我有这组表格和数据 CREATE TABLE item id INT PRIMARY KEY name VARCHAR CREATE TABLE property id INT PRIMARY KEY name VARCHAR CREATE
  • 显式与隐式 SQL 连接

    显式内连接与隐式内连接之间有效率差异吗 例如 SELECT FROM table a INNER JOIN table b ON a id b id vs SELECT a b FROM table a table b WHERE a id
  • Django 查询:“datetime + delta”作为表达式

    好吧 我的问题如下 假设我有下一个模型 这是一个简单的情况 class Period models Model name CharField field specs here start date DateTimeField field s
  • 如何使用内联 SQL 参数化 IN 语句的集合? [复制]

    这个问题在这里已经有答案了 可能的重复 参数化 SQL IN 子句 https stackoverflow com questions 337704 parameterizing a sql in clause 你好 我有一个查询 如下所示
  • MYSQL:SQL查询获取自增字段的值

    我有一张桌子 主键是id及其自动递增 现在 当我插入新记录时 我需要获取更新记录的 id 我怎样才能做到这一点 如果我使用查询 select max id from table name 执行后我可以获得id 但我能确定它是刚刚插入的记录的

随机推荐

  • 无序对集合,编译错误

    我正在尝试创建一组无序的对 到目前为止我有 typedef std pair
  • 如何为子域配置 Facebook 应用程序

    我正在构建一个多租户应用程序 并且我挣扎将 Facebook 登录合并到 Web 应用程序中 例如 租户正在使用子域 http tenant 1 domain com http tenant 2 domain com http tenant
  • 如何识别STATUS_INVALID_CRUNTIME_PARAMETER异常

    平台是Windows 7 SP1 我最近花了一些时间调试由于代码将无效参数传递给 安全 CRT 函数之一而引起的问题 结果 我的应用程序立即中止 没有任何警告或任何内容 甚至没有崩溃对话框 起初 我尝试通过将 Windbg 附加到我的应用程
  • Chrome 浏览器 61v。单击可见区域之外的元素时出现问题

    当我将 Chrome 浏览器更新到 61v 时 单击可见区域之外的不可见元素会出现问题 早些时候它起作用了 尝试点击可见区域之外的链接 element Click 有 InvalidOperationException 元素在点 1134
  • 如何使信号 NaN 易于使用?

    IEEE754 标准定义了两类 NaN 安静 NaN QNaN 和信令 NaN SNaN 当 SNaN 加载到浮点寄存器时 浮点单元会引发异常 QNaN 可通过名为的常量用于 Delphi 代码NaN声明于Math 该常数的定义是 cons
  • Hibernate c3p0 连接池未超时空闲连接

    我们有一个 java 服务器连接到 MySQL 5 数据库 使用 Hibernate 作为持久层 该持久层使用 c3p0 进行数据库连接池 我尝试遵循 c3p0 和 hibernate 文档 Hibernate 如何配置 c3p0 连接池
  • 通过 Chrome 扩展模拟点击页面上的元素?

    我需要迭代并单击该类的所有元素 star gray在页面上 并在重定向后保持迭代和单击 运行JavaScript代码无法满足第二个要求 所以我打算写一个Chrome扩展 但我未能通过扩展模拟网页上的点击事件 我的项目如下 清单 json m
  • 从 GitHub 进行 Git 克隆后,我看不到我的分支

    我在 GitHub 上有一个存储库 它包含master和一个分支 当我克隆它时 我只获得master并没有看到我的分支 为什么会这样呢 如何查看存储库中的所有分支 默认情况下 git clone只创建一个分支 当前签出的分支 通常是 mas
  • 控制台窗口立即消失[重复]

    这个问题在这里已经有答案了 使用 C 的 Visual Studio 中的控制台窗口不稳定 ReadLine 也不工作 窗口立即消失 我看不到结果 您需要在代码后添加以下行 Console ReadKey 这将阻止控制台执行下一行 直到您按
  • 如何监控 OmniThreadLibrary 中的 Pipeline 阶段?

    是否可以以某种方式监控管道任务 我尝试像这样向每个任务添加监视器 FPipeline Parallel Pipeline Stage StageWorker1 Parallel TaskConfig MonitorWith MyMonito
  • 创建自定义凸路径Android

    我希望为我的框架布局设置一个自定义形状 矩形每个角的不同半径 以便框架布局中的视图将剪辑到形状的边界 ViewOutlineProvider provider new ViewOutlineProvider Override public
  • 通过客户端存根访问 WSDL 时出现 Java InaccessibleWSDLException

    我正在尝试为 Exchange Web 服务编写自定义 Java 客户端 我已经使用生成了客户端存根wsimport工具如所解释here http java dzone com articles jax ws hello world来自 E
  • 在 Linux 上编译一个共享库以面向所有发行版

    我们希望创建一个共享库 so 以针对所有发行版 包括旧发行版 该代码是用 C 编写的 并使用 C 11 功能 因此编译器必须至少为 gcc 4 7 我们注意到 如果我们在安装了 gcc 4 7 2 的 Linux 机器 例如 Ubuntu
  • 使用 php 将视频链接加载到 html 播放器

    我有 HTML 视频此标签用于视频播放
  • 如何在 Java Swing 工具栏中创建“下拉”菜单?

    我在 Swing JToolBar 上创建了一个下拉菜单 但它并没有按照我想要的方式创造行为 我的目标是让它像 Firefox 的 智能书签 按钮一样工作 当用户选择菜单项时它会消失 正确 当用户按 ESC 时它消失 正确 当用户单击菜单之
  • 为什么 swift 中没有 PerformSelector

    显然以下内容在 swift 中不再可用 self performSelector selector onFlip withObject nil afterDelay 0 3 如果仍然存在以下情况 为什么会出现这种情况 NSObject ca
  • 发现多种类型与名为“Account”的控制器匹配。 MVC 4 和使用 RouteConfig.CS

    我目前在同一文件夹中有 2 个项目 主要的 Project1 Project2 Problem 发现多种类型与名为的控制器匹配Account 如果服务此请求的路由可能会发生这种情况 controller action id 不指定命名空间来
  • 错误 rxjs_Observable__.Observable.forkJoin 不是函数?

    我在用Rxjs in an angualr cli应用 在viewer component ts中 Other Imports import Observable from rxjs Observable omitting for brev
  • 如何使用Python连接WiFi网络? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在尝试用 Python 编写一个脚本 该脚本将使我能够搜索无线网络并连接到它们 有没有为此目的的Python 库 None
  • 任何使用 Red Gate 的 SQL 源代码控制的人

    我们一直在寻找 SQL 源代码控制的可能解决方案 我刚刚遇到 Red Gates SQL 源代码控制 想知道是否有人实现了它 我打算下载试用版并尝试一下 但只是想看看其他人是否有真实的体验 一如既往地非常感谢您的投入 S 我更新了下面的原始