RedGate SQL源代码控制数据

时间:2017-01-18 13:55:02

标签: sql-server continuous-integration redgate

我正在研究RedGate SQL Toolbelt以允许完整的数据库CI,并且对这些工具如何促进我对架构和静态数据的需求感到满意。

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

一个很好的示例可能是您想要控制管理员或系统用户的用户表,因此它可以成为您的CI的一部分,但又想要排除任何真实用户。

自2011年中期以来,RedGate已经有request for filtered static data左右,我想知道是否有人设计出一种明智的方法来解决这个限制?

2 个答案:

答案 0 :(得分:0)

我能想到的只有:

  1. 有两张桌子
  2. 一个适合临时用户
  3. 一个用于您希望拥有静态数据的超级用户
  4. 仅将超级用户表数据提交给源代码管理
  5. 创建一个UNION ALL这两个表
  6. 的视图
  7. 在代码中使用此视图而不是实际表格。
  8. 也许这不是最漂亮的方式,但我认为它应该适用于您的用例。

答案 1 :(得分:0)

我尝试了涉及Migration Scripts的解决方案,但是执行它们的顺序仍然会导致问题。

我最终选择的解决方案是拥有一个链接到源控件的独立数据库,所有包含系统数据或混合数据的表都可以控制其记录。

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

我发现DLM Automation Cmdlet缺少功能,而是选择使用命令行运行SQL Compare和SQL Data Compare来执行CI。这并没有偶然的打嗝,但是这些都是使用上述工具解决的,并且手动从SC推入我们的CI数据库。