RedGate SQL 源代码控制数据

RedGate SQL Source Control Data

我正在研究 RedGate SQL 工具带以允许完整的数据库 CI 并且我很满意table 这些工具如何满足我对模式和静态数据的需求。

但是,其他 table 中会有一定数量的数据,我想对其进行源控制并在我的 CI 中使用。这些 table 可能有一百万条记录,只有少数记录需要在源代码管理中。数据库设计意味着这些数据不能放在单独的 table 中,然后可以对其进行源代码控制。

一个很好的例子可能是用户 table,您希望在其中对管理员或系统用户进行源代码控制,以便它可以成为您 CI 的一部分,但又想排除任何真实用户。

RedGate 自 2011 年年中以来就有了 request for filtered static data,我想知道是否有人设计了一个明智的方法来绕过这个限制?

我能想到的就是:

  1. 有两个table
  2. 临时用户一个
  3. 一个用于超级用户,您希望将其作为静态数据
  4. 仅将超级用户 table 数据提交到源代码管理
  5. 创建一个视图 UNION ALL 这两个 tables
  6. 在您的代码中使用此视图而不是实际的 table。

也许这不是最好的方法,但我认为它应该适用于您的用例。

我尝试了涉及迁移脚本的解决方案,但它们的执行顺序仍然导致问题。

我最后选择的解决方案是有一个链接到源代码控制的单独数据库,所有包含系统数据或混合数据的表都对其记录进行源控制。

然后我在另一个数据库中开发并将模式和数据更改推送到源代码控制的数据库以提交它们。这样,源控制数据表永远不会包含 'user' 数据。

我发现 DLM Automation Cmdlet 缺少功能,而是选择 运行 SQL Compare 和 SQL Data Compare 使用命令行来执行我们的 CI.这并非没有偶尔的小问题,但这些都是使用上述工具解决的,并从 SC 手动推送到我们的 CI 数据库中。