[英]Multi System Database structure based copying/updating best practice
因此,在搜索并没有找到类似案例之后,我想提出一个新问题。 情况就是这样:我们正在使用具有非常复杂的数据结构的大型数据库。 另外,我们正在开发多个系统,以确保稳定性(开发,测试,质量和生产性),并且始终难以解决,因此请在这些系统之间移动数据。 正如我所说的,数据结构非常大,数据库内部也有很多逻辑。 客户能够添加新的数据部分作为配置,并且还有静态收入的数据用于统计和监视。 因此,让我用一个小例子来解释这个问题:
让我们以该数据库为例。 我们有一些家庭互相竞争。 他们将针对他们提出的观点创建一些统计数据。
该数据库是在两个系统上开发的,一个是供家庭使用的高效系统,另一个是供程序员/操作员使用的开发系统。
在开发过程中,程序员将添加测试数据,例如儿童家庭竞赛和积分。 在使用家庭时,将创建新的比赛并分配新的孩子,并填写积分表。
我想将表的一部分复制到另一个系统,但是能够忽略某些表(例如:Points),并且我想确保不复制没有其父母家庭的孩子,因此数据库中没有“无父母”对象。
问题:什么是省事的好方法?
我不需要特定数据库类型或某些脚本的解决方案。 我正在寻找工具,库或良好实践。 (但请注意,我们正在使用mssql。)
我们目前正在为解决此问题制作工具(进展不佳:不稳定,过于复杂,缓慢且可能会重新发明轮子)。
我认识的很多开发人员也只是复制整个数据库(进行备份并将其运行到另一台服务器上),但这也造成了问题:正在复制用户并更改其GUID,因此他们失去了权限等。我不认为这是一个很好的解决方案。 而且数据库关闭了很长一段时间,而且从来没有一个平稳的过程。
手动进行创建有时是最简单的方法,但是考虑到我们数据结构的大小,这不仅是一项繁重的工作,而且很容易出错。
所以我希望有人知道某种工具或类似的东西可以帮助我。
欢迎使用像数据库这样的有状态实体的发展过程。 :) RedGate制作了一个称为SQL Source Control的工具,该工具非常适合将更改的数据和Schema移入生产环境,并且可以与GIT之类的源代码控制解决方案进行交互。 它有点贵,但这是我发现的最好的。 我在最后一个工作岗位上炮制了一个使开发人员与生产数据和开发人员变更保持最新的选择,这不是……不是百分百完美,而是总比没有好,而且免费。 它是用Powershell开发的,它的内容如下:
再次,就像我说的那样,它可以将产品数据还原到我们的开发环境中并自动进行,同时又保持我们的开发变更完整无缺,但是需要大量的维护和维护。 另外,请记住,一旦数据库达到一定大小,由于需要花费大量时间,因此每晚进行还原不再是可行的选择。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.