sql-server – 从备份恢复SQL数据库是否重建其索引?

从备份还原sql数据库是否从头开始重建其表和索引?或者它是否与备份时的内部物理顺序保持一致?

我们正在使用sql 2000和Quest Lightspeed压缩备份,如果这有任何区别的话.

解决方法

答案是否定的,无论使用何种备份软件.

备份是物理操作,而不是逻辑操作.它读取包含已分配页面的所有扩展区(即,即使只分配了8页扩展区中的单个页面,它也将备份整个64K扩展区),并且它按物理顺序执行.

还原是物理操作,而不是逻辑操作.它规定了数据文件中合法位置的范围.

重建索引(或类似的东西)是一个逻辑操作,必须记录.备份和还原直接操作数据文件,而无需通过缓冲池,这是无法完成此操作的一个原因.无法做到的另一个原因是备份和恢复不了解正在备份的数据中包含的内容.

然而,这无法做到的主要原因是在恢复操作期间移动页面会破坏b树指针.如果页面A指向页面B,但页面A由还原过程移动,页面B如何更新为指向页面A?如果它立即更新,则可能会被其余的恢复过程覆盖.如果延迟更新,如果还原过程还原了一些删除页面A或页面B的事务日志,该怎么办?它根本无法完成.

底线 – 备份和恢复是永不改变数据的物理操作.

希望这可以帮助!

PS虽然它没有直接解决这个问题,但请查看我为7月TechNet杂志撰写的文章,该文章解释了各种备份如何在内部工作:Understanding SQL Server Backups.9月杂志将有关于理解恢复的系列文章下一篇.

相关文章

SELECT a.*,b.dp_name,c.pa_name,fm_name=(CASE WHEN a.fm_n...
if not exists(select name from syscolumns where name=&am...
select a.*,pano=a.pa_no,b.pa_name,f.dp_name,e.fw_state_n...
要在 SQL Server 2019 中设置定时自动重启,可以使用 Window...
您收到的错误消息表明数据库 'EastRiver' 的...
首先我需要查询出需要使用SQL Server Profiler跟踪的数据库标...