如何将 MS SQL 服务器不需要的数据存入仓库

如何将 MS SQL 服务器不需要的数据存入仓库

我被要求在 MS SQL Server 2008 中截断一个大表。数据不是必需的,但可能每两年需要一次。它永远不需要更改,只需查看即可。

问题是,既然我不需要每天使用这些数据,我该如何保护和备份这些数据?

请记住,我可能每两年需要访问一次它,如果恢复过程需要几个小时,对我们来说也没问题。

整个表大约有 300 万行,我需要将其截断为大约 100 万行。

答案1

您打算如何访问表数据?

如果您使用的是更灵活的方法(您自己的代码或简单的 SQl 查询),那么一个简单的解决方法是将所需的表复制到另一个数据库并将其与服务器分离。然后,截断表(或删除不需要的行,尽管您可能需要检查 T-Log 的大小)。

当您需要时,您可以随时以只读模式从存储中重新装载相关数据库。如果您需要同时对多个备份运行查询,您可以创建一个重新分组所有数据的视图。

如果您使用的软件不允许您自定义该表的访问方式,您仍然可以将该表单独复制到另一个数据库,但恢复该备份可能会有问题,因为您需要将现有上下文(其他表的状态)与旧数据合并。此外,数据结构可能已发生变化,几乎不可能恢复。

因此在这种情况下,我建议您简单地备份整个数据库并存储它(最好与访问它的软件版本一起存储)。

答案2

300 万行并不是很多,尤其是对于 SQL Server 来说。此外,您无法截断表并保留行。截断会完全清空。

即使你有时间,删除也很慢。

我会右键单击您的表,编写脚本,创建新表。将其重命名为 Table_Backup11232011,确保也重命名您的主键...

insert into Table_Backup11232011 select * from oldtable

truncate table oldtable

现在,您有一个备份和一个新表。300 万行数据可能只会花费您几百兆字节,这不算什么。

答案3

归档/可访问性:这里有一个想法... 1)执行数据删除 2)将 tyhat 表放在其自己的 SQL 文件组中 3)将文件刻录到只读设备(空间允许)4)使用 ALTER TABLE 重新定义文件的位置并将其定义为只读 5)继续派对,Garth!

现在数据已从您的硬盘中移除,无法更改,但在需要时仍可用。

相关内容