Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 是不是类似于;“可编辑快照”;像叉子?_Sql Server_Tsql - Fatal编程技术网

Sql server 是不是类似于;“可编辑快照”;像叉子?

Sql server 是不是类似于;“可编辑快照”;像叉子?,sql-server,tsql,Sql Server,Tsql,是否有一种方法可以创建数据库的快照,然后在不需要数据库的两倍空间的情况下编辑此快照?尤其是未编辑的表不应重复 上下文,因为这可能是一个X/Y问题: 我有很多非常大的数据库(200GB,有数千个表)和多个开发人员为它们编写软件,其中几乎总是包括模式更改。目前,这些开发人员无法独立工作,因为每个开发人员都需要自己的数据库版本。 但是,这需要开发人员*数据库存储 实际上,大多数开发人员只同时处理一个或两个数据库。 可以根据需要复制数据库,因为这只需要数据库+开发人员*平均数据库大小存储。但是,复制数据

是否有一种方法可以创建数据库的快照,然后在不需要数据库的两倍空间的情况下编辑此快照?尤其是未编辑的表不应重复

上下文,因为这可能是一个X/Y问题:

我有很多非常大的数据库(200GB,有数千个表)和多个开发人员为它们编写软件,其中几乎总是包括模式更改。目前,这些开发人员无法独立工作,因为每个开发人员都需要自己的数据库版本。 但是,这需要
开发人员*数据库
存储

实际上,大多数开发人员只同时处理一个或两个数据库。 可以根据需要复制数据库,因为这只需要
数据库+开发人员*平均数据库大小
存储。但是,复制数据库的速度会变慢。快速开关在这里是必不可少的。而且,如果需要更少的存储空间,那就太好了

所以我梦想的是:

  • 以某种方式冻结原始数据库
  • 然后有多个从冻结版本读取的“影子”数据库,如果编辑了某些内容(
    update
    delete
    insert
    或架构更改),则只有差异存储在其他地方。甚至可以复制整个表,因为开发人员通常只在数据库的非常小的区域中进行

我使用了原始数据库的视图,并手动将所需区域中的视图替换为实际的表副本。然而,我真正想要的是一种按需自动完成的方式。基本上是一种快速复制数据库的方法,不需要双重存储。

即使是最终输出也要求每个开发人员都有自己的数据库。让我澄清一下您的问题。开发人员获得数据库的初始副本,然后您只想进行更改。我说得对吗?理论上,您可以通过利用差异磁盘技术(如内置于Windows中的VHD)与数据库文件的SMB共享相结合来实现这一点。我曾经考虑过构建类似的东西,但最终,一个周期性地从live复制数据库的大型暂存服务器在实践中已经足够了,即使有多个开发人员在使用它。除非这些千兆字节的数据对于所有开发人员完成任何工作来说都是绝对必要的(而且可能不是),否则使用一些示例数据的SSDT数据库项目要方便得多(并且可以版本化)。@TheGameiswar我不确定你的意思。我不想传播任何更改。数据库之间不需要任何方向的新数据。所有更改的数据只需保存在开发人员数据库中,原始数据库永远不会更改。@Jeroenmoster数据库由专有代码编辑。而且几乎不可能知道开发人员实际需要哪些数据。我的最终目标是提供少量样本数据,但要实现这一目标,我们首先需要一种处理多个数据库的方法,因此,我们可以开始使用不同的数据库。即使您的最终输出要求每个开发人员都有自己的数据库。让我澄清一下您的问题。开发人员获得数据库的初始副本,然后您只希望进行更改。我说得对吗?理论上,您可以通过利用差异磁盘技术来实现这一点(如VHD,内置于Windows中)与数据库文件的SMB共享相结合。我曾经考虑过构建类似的东西,但最终,一台定期从live复制数据库的大型临时服务器在实践中已经足够了,即使有多个开发人员在使用它。除非这些千兆字节的数据对于所有开发人员来说都是绝对必要的带有一些示例数据的ne(可能不是)SSDT数据库项目更方便(并且可以版本化).@TheGameiswar我不知道你的意思。我不想传播任何更改。数据库之间不需要任何方向的新数据。所有更改的数据只需要在开发人员数据库中,原始数据库永远不会更改。@jeroemoster数据库是由专有代码编辑的。几乎不可能分辨出是哪个数据库开发人员实际需要的数据。我的最终目标是提供少量的样本数据,但要实现这一目标,我们需要一种先处理多个数据库的方法,这样我们就可以开始使用不同的数据库。