2011-05-19 104 views
6

很简单的问题。在SQL Server中归档大量的旧数据

我有一个大的70GB数据库,其中有四个包含大约5000万行的五个表。这些表格包含大约6年的数据。我们的数据库空间有限,达到80GB,我们将在接下来的6个月内迅速接近这个数据库。

我们只需要在实时数据库中保存大约两年的数据。没有将实时数据库脱机(它是24/7数据库),对旧数据进行归档的最佳方法是什么?

我们在集群环境中使用使用共享存储的主动 - 被动设置运行SQL Server 2008 R2 Standard。

谢谢。

回答

9

当你说归档时,这意味着“需要保留数据供以后使用”。

除此之外,如果数据现在不可用,那么如果依赖磁带备份,则可能会丢失数据。此外,您需要有磁盘空间才能在将来恢复它。

当然,这些并不是无法克服的问题,但除非事情是至关重要的,否则我会保持数据在线,直到有其他证明为止。我的经验表明,当你最不期待的时候,民间需要存档数据...

一个选项(问题被标记为SQL Server 2008)是compression of data。例如,您可以压缩联机的归档表。

创建存档表。

SELECT * INTO ANewArchiveTable 
FROM CurrentTable 
WHERE SomeDateColumn <= DATEADD(year, -2, GETDATE()) 

或者使用partitioning来达到同样的

如果数据是在网上,你可以进一步减少“当前”表,并在压缩归档表/分区比旧的数据,也就是说,3个月太

+0

我非常喜欢这个。感谢领先! – Sean 2011-06-06 23:36:50

+0

我已经有一个存档表...但我如何压缩它? – 2011-12-08 15:26:31

+0

@Jeff Davis:SQL Server 2008+:http://blogs.msdn.com/b/sqlserverstorageengine/archive/tags/data+compression/ – gbn 2011-12-08 15:47:57