因此,在搜索后没有找到类似的案例,我想打开一个新问题。 这样的话: 我们正在使用具有非常复杂的数据结构的大型数据库。另外,我们正在开发多个系统,以确保稳定性(开发,测试,质量和生产性),并且始终难以解决,因此在这些系统之间移动数据。正如我所说的,数据结构非常大,数据库内部也有很多逻辑。客户能够添加新的数据部分作为配置,并且还有静态收入的数据用于统计和监视。因此,让我用一个小例子来说明问题:
让我们以该数据库为例。我们有一些家庭互相竞争。他们将针对他们提出的观点创建一些统计数据。
此数据库是在两个系统上开发的,一个是供家庭使用的高效系统,另一个是供程序员/操作员使用的开发系统。
在开发程序员的同时,会添加测试数据,例如儿童家庭竞赛和积分。在使用这些家庭时,将创建新的比赛并分配新的孩子,并填写积分表。
我想将表的某些部分复制到另一个系统,但是能够忽略某些表(例如:Points),并且我想确保不要复制没有父母家庭的孩子,因此在其中没有“无父母”对象数据库。
问题:什么是一种省事的好方法?
我不需要针对特定数据库类型或某些脚本的解决方案。我正在寻找工具,库或良好实践。 (但请注意,我们正在使用mssql。)
我们目前正在为解决此问题制作工具(进展不顺利:不稳定,过于复杂,缓慢且有可能重新发明轮子)。
我知道很多开发人员都只是复制整个数据库(进行备份并将其运行到另一台服务器中),但这也造成了问题:正在复制用户并更改其GUID,因此他们释放了权限等。认为这是一个很好的解决方案。另外,数据库宕机了很长时间,而且从未经历过平稳的过程。
有时候,手动制作是最简单的方法,但是考虑到我们数据结构的大小,这不仅是一项繁重的工作,而且很容易出错。
所以我希望有人知道一种工具或类似的东西可以帮助我。
答案 0 :(得分:2)
欢迎像数据库这样的有状态实体的发展之痛。 :) RedGate制作了一个称为SQL Source Control的工具,该工具非常适合将更改的数据和模式移至生产环境,并且可以与诸如GIT之类的源代码控制解决方案进行交互。它有点贵,但这是我发现的最好的。我在最后一个工作岗位上炮制了一个使开发人员与生产数据和开发人员变更保持最新的选择,这不是……不是百分百完美,而是总比没有好,而且免费。它是用Powershell开发的,它是这样的:
再次,就像我说的那样,它可以将产品数据还原到我们的开发环境中并使其自动化,同时保持我们的开发变更完好无损,但是需要大量的维护和维护。另外,请记住,一旦您的数据库达到一定大小,由于需要花费大量的时间进行夜间还原,因此不再可行。