【发布时间】:2018-08-29 15:05:50
【问题描述】:
所以在搜索并没有找到类似案例后,我想提出一个新问题。 所以情况是这样的: 我们正在使用具有非常复杂数据结构的大型数据库。此外,我们正在开发多个系统以确保稳定性(开发、测试、质量和生产),并且它始终是一个斗争,因此在这些系统之间移动数据。正如我所说,数据结构非常大,数据库内部也有很多逻辑。客户可以添加新的数据部分作为配置,并且还有用于统计和监控的静态数据收入。所以让我用一个小例子来解释这个问题:
让我们以这个数据库为例。我们有一些家庭互相竞争。他们将创建一些关于他们所做的点的统计数据。
- 紫色表是固定配置。它们只创建一次,只能通过 Operator 进行更改。这些更改将首先在开发系统中完成和测试。
- 黄色表正在更改配置。每个家庭都可以创建或删除多个比赛并分配他们的孩子。
- 红表只是普通数据。每次孩子得分时,都会添加一个新行,其中包含数量和当前时间以及与孩子和比赛的关系。 该表将作为以后统计的基础。
这个数据库是在两个系统上开发的,一个供家庭使用的生产系统和一个供程序员/操作员使用的开发系统。
在开发过程中,程序员将添加测试数据,例如儿童家庭比赛和积分。在使用家庭时,家庭将创建新的比赛并分配新的孩子,并填满积分表。
- 有必要将新的/测试的/固定的系列从开发系统复制到生产系统。
- 还需要将竞赛、竞赛-孩子-作业和积分从生产系统复制到开发系统以查找新错误。
- 还必须可以更改开发系统上的表结构并将此更改传输到生产系统。 (这不应该是这里的主要话题,有时它可能会发生如此大的变化,以至于没有简单的方法,所以让这一点保持简单,但请牢记。)
我想将部分表格复制到另一个系统,但可以忽略某些表格(例如:Points),并且我想确保不复制没有父母家庭的孩子,因此没有“无父母”对象数据库。
问题:有什么好的方法可以做到这一点?
我不需要针对特定数据库类型或某些脚本的解决方案。我正在寻找工具、库或良好实践。 (但作为说明,我们使用的是 mssql。)
我们目前正在为这个问题制作一个工具(进展不顺利:不稳定、过于复杂、速度慢并且可能重新发明轮子)。
还有很多我知道的开发人员只是复制整个数据库(进行备份并将其运行到另一台服务器)但这也产生了问题:正在复制用户并且他们的 guid 发生更改,因此他们失去了权限等。我不' t 认为这是一个很好的解决方案。此外,数据库关闭了很长时间,而且过程从来都不是一帆风顺的。
手动制作有时是最简单的方法,但考虑到我们的数据结构的大小,它不仅是一项庞大的工作,而且很可能出错。
所以我希望有人知道一个工具或类似的东西来帮助我。
【问题讨论】:
-
有必要将新的/经过测试的/已修复的系列从开发系统复制到生产系统。 -- 简短回答:数据库播种,这取决于什么技术堆栈你有,nodejs可以使用squelize、C# also had seeding、laravel also had seeding等实体框架。
-
也可以在Software Engineering Stackexchange 上试试运气。但同样,人们可能只会说,播种。
-
如果你知道你使用 MS SQL 为什么要添加除 MS SQL 之外的所有标签?至于你的问题,也许是一些 SSIS 包?
-
也许您可以使用事务复制或日志传送或其他方式将数据(某些部分)传输到另一个数据库。不知道这在您的场景中是否实用,但它是另一种移动数据的方式,可能更省时。
-
@BagusTesa 在引用其他网站时,指出cross-posting is frowned upon 通常会有所帮助
标签: sql sql-server database copying