备份非常大的表

iL_*_*rto 7 sql-server backup sql-server-2008-r2 update

我必须更新一个大表的某些值(为了一个假定的例子,它被称为“资源”,它超过 500 万行),因此我必须在执行更改之前进行备份。我们没有足够的数据库可用空间来存储完整的备份表。

哪种方法最好?有没有办法通过块来做到这一点?我的意思是:备份原始表中的前 100K 行,更新原始表中的那 100K 行,从备份表中删除那 100K 行,备份原始表中的以下 100K 行,然后进行类似的操作. 这可行吗?

小智 4

我想到了两个想法。

  • 如果您担心此更新可能不会按照您想象的方式正确影响表,您是否考虑过将更新放入事务中。
  • 您可以进行更新、查询数据,如果一切正常,则提交事务。如果失败,您可以执行回滚。

选择

您可能需要查看BCP 实用程序以将表提取到 SQL Server 外部的平面文件中。

据推测,您可以将表的内容存储在不会承受太大存储压力的位置。如果更新过程失败,您可以尝试将内容恢复到表中。