如何有效地归档大型(多GB)SQL Server数据库的较早部分?

时间:2020-03-05 18:44:17  来源:igfitidea点击:

现在,我正在研究一种将旧数据从大型工作数据库存档到具有相同架构的单独存档数据库的解决方案。我使用SQL脚本和SQL Server管理对象(SMO)从用C#编写的.Net可执行文件中移动数据。

归档的数据仍然应该可以访问,甚至(偶尔)可更改,我们只是希望它不妨碍保持工作数据库的精简和快速。

事实证明,围绕表中的大量数据进行滚动以及管理表之间的关系是一个很大的挑战。

我想知道是否有更好的方法来使用SQL Server归档数据。

有任何想法吗?

解决方案

回答

我认为,如果我们仍然希望/需要访问数据,那么可以对一些最大或者最常用的表进行分区。

回答

是的,对文件组使用表和索引分区。

仅当我们想从结果中获得最后一点速度时,我们甚至不必更改select语句。

另一个选择可以是通过两台服务器以及两台服务器之间的双向复制来实现工作负载平衡。

回答

我们处于类似情况。出于监管方面的原因,我们无法在指定的时间内删除数据,但是我们的许多表都变得非常庞大且笨拙,实际上,早于一个月的许多数据都可以删除,而日常问题很少。

当前,我们使用BCP定制的.NET / shell组合应用程序以编程方式修剪表,以备份可以压缩并保留在网络共享之外的文件。这不是特别容易访问,但是它可以节省空间。 (这很复杂,因为我们需要保留某些历史日期,而不是能够以一定的大小或者关键范围在一定范围内进行截断。)

我们正在研究替代方案,但是,令我惊讶的是,在此讨论中,最佳实践的方式并不多!