我有一个要求,使用新的主键将当前数据库的“快照”复制到同一个数据库中。如何在SQLServer数据库中复制大量数据集
有问题的模式由大约10个表组成,但少数表可能包含数十万至1百万条需要重复的记录。
我在这里有什么选择?
恐怕编写SPROC需要在整个操作过程中锁定有问题的数据库行(对于并发),这对其他用户来说很烦人。假设我们可以将其优化到sqlserver允许的最大范围,这种操作需要多长时间?执行这么多插入操作需要30秒到1分钟吗?我无法锁定整个表并进行批量插入,因为其他帐户下的其他用户正在独立使用相同的表。
根据业绩预期,另一种是将目前的DB转储到一个XML文件,然后异步复制从该XML文件的分贝在后台休闲。这样做的明显优点是数据库只在执行xml转储所需的时间内被锁定,并且插入可以在后台运行。
如果一个好的DBA可以得到“克隆”操作执行开始到结束,在10秒钟,然后它可能不值得的xmldump/Web服务解决方案的复杂性。但如果它是一个失败的原因,并且插入潜在的数百万行可能会及时膨胀,那么我宁愿立即开始使用xml方法。
或者也许有一个完全更好的方法?
非常感谢您提供的任何见解。
什么版本(2000 ,2005,2008)以及您正在使用的Sql Server的edtion(express,workgroup,standard,enterprise)? – chadhoc 2009-11-18 22:21:11
是否有“带有新主键”的要求? – 2009-11-18 22:32:53
新的主键是一个要求,因为它们需要是重复的记录,然后将这些记录关联起来,作为这个数据的不同“版本”。 我正在使用sql server 2005标准版 – Scott 2009-11-19 00:08:05